[Rd] Help with OS X (BSD) ps command

Paul Roebuck roebuck at mdanderson.org
Wed Feb 7 06:56:51 CET 2007


On Fri, 2 Feb 2007, Jeffrey J. Hallman wrote:

> My fame package has a function that checks to see if
> a FAME SERVER process is already running.  On Linux,
> I can do this in one of two ways:
>
>   pid <- Sys.getpid()
>   user <- Sys.info()["user"]
>
>   cmd <- paste("pgrep -fU", user, "-P", pid, "'FAME SERVER'")
>   fameRunning <- as.logical(length(system(cmd, intern = T)))
>
> or I can use
>
>   cmd <- paste("ps -ef | grep", user, "| grep", pid,
>                  "| grep -v grep | grep -c 'FAME SERVER'")
>   fameRunning <- as.logical(as.numeric(system(cmd, intern = T)))
>
> Mac OS X does not have pgrep, and being a BSD
> derivative, takes different arguments for the 'ps'
> command.  I don't have access to a BSD machine. Can
> someone who does tell me the correct invocation of
> 'ps' to see if 'user' is running a 'FAME SERVER'
> process with the R process as its parent process?
>
> While FAME is not officially supported on OS X, I
> am told that it can be made to work there.  Had I
> not heard this, of course, I could just answer FALSE
> for OS X and be done with it.

<<untested>>
cmd <- paste("ps -o user,ppid,command", "| ",
             "grep", user, "| ",
             "grep", pid, "| "
             "grep -c '[F]AME SERVER'")

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)



More information about the R-devel mailing list