Samuel Sieb wrote:
On 11/21/19 1:48 PM, Todd Zullinger wrote:
Indeed. And while pidof would have probably been a better solution for the initial problem we thought we were trying to solve, I think knowing that you only want to skip user1 from starting new xeyes if it is already running for user1 that pgrep will be better suited. With pgrep you can use the -u/--euid or -U/--uid option to limit the match to xeyes processes which are running for the proper user.
I don't think that would work in this case. The problem is that he's switching users, so from one user account he would need to check for the processes under the other user, not the current one. Assuming that he's only going to have one user logged in to the desktop at a time, this is the best option. Although "pidof" should work equally well.
If you're running as user1 and want to ensure that only one copy of xeyes is running as user1, you can use
pgrep -U user1 xeyes (or pgrep -U $(id -un) xeyes)
to check. Or you could run
pgrep -U user2 xeyes
if you wanted to check for the other user. Either way, that does help with what I understood to be the problem here. I'm sure there are many ways to solve it, but I don't think pidof works as far as I understood things.
Whether that's actually useful in this problem is hard to say for sure. But those options are useful if you're testing whether a program is running and need to distinguish if it's running at all versus running as a particular user.