Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
|
05-31-2005, 04:29 PM
|
#1
|
LQ Newbie
Registered: Mar 2004
Posts: 17
Rep:
|
Advanced question: finding pid of an x window
Hi.. I'm running X, and I want to find the process id of a program on the screen so that I can strace it.
However, the closest I've come is finding xkill, which works by telling the X server to close that connection, which usually (always?) kills the process that put the screen there.
I've found xwininfo and xlsclients commands, but they don't seem to have pid information.
I know that X isn't supposed to know the pid of processes talking to it, but I'm sure that if I knew the connection details I could use netstat -p or lsof | grep to find the actual process.
So, do you have any ideas?
|
|
|
05-31-2005, 04:34 PM
|
#2
|
Member
Registered: Apr 2004
Distribution: Slackware 11.0, Gentoo
Posts: 252
Rep:
|
ps -aux | grep <name_of_program>
If that doesn't find it (the process name is different than the program name), then just do ps -aux and try to find the program.
|
|
1 members found this post helpful.
|
05-31-2005, 06:12 PM
|
#3
|
LQ Newbie
Registered: Mar 2004
Posts: 17
Original Poster
Rep:
|
Ok, let me give you some more detail.
The program is 'up2date', and 'ps aux | grep up2date' found these three processes:
root 3181 0.0 0.7 12672 3856 ? SN 12:57 0:00 up2date
root 3182 0.0 0.2 5020 1216 ? SN 12:57 0:00 /usr/sbin/userhelper -w up2date
root 3183 1.1 14.1 79072 68504 ? RN 12:57 1:16 /usr/bin/python -u /usr/sbin/up2date
One (or more) of these three has the window open. As it stands, I'd have to kill them off one by one to determine which one has the window I'm interested in. In addition, if I kill off one of them, the others might quit as well.
In short, I'm guessing. I don't like guessing, it's not very scientific.
For every window on the screen, we know there is a definite process id behind it. We just don't know how to go from window-id to process-id, short of killing stuff and seeing what's left.
The goal for today is to make 'up2date' use a server on the same continent as I'm on, but to do that I need to strace it to find out where it gets its configuration from. Right now I'm in Canada and it's getting files from Czechoslovakia(!), and the speed is not good. I'm going to fix it to find the closest (ping-wise) server and use that. I might even go so far as to find the best bandwidth, but that's a more tedious problem to solve.
The long term goal is to figure out how to track down a process id from a window, in case the name of the program is unknown. This would come in handy if some hacker were to get onto my system and pop up a window on my screen, as typically they try and hide their programs with unrelated names (So that "ps aux | grep hackerprocess" doesn't work).
|
|
|
05-31-2005, 06:36 PM
|
#4
|
LQ Newbie
Registered: Mar 2004
Posts: 17
Original Poster
Rep:
|
Found it
Ok, I found the command: xprop
If you do 'xprop _NET_WM_PID' and then click on the window, it will tell you the pid.
You can also say 'xprop -id 0x2200019 _NET_WM_PID' if you know the id of the window already.
|
|
1 members found this post helpful.
|
All times are GMT -5. The time now is 05:13 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|