我知道我可以PID
通过使用来获取进程ps
,但是如何找到该进程的完整路径?
ps aux
将打印出根据以下格式化的内容.它向用户显示该进程在其下运行.但有没有办法显示该流程运行的组?
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Run Code Online (Sandbox Code Playgroud) 如果我使用ps -efW
,则列出Windows进程,但不包括命令行参数.
我碰到,我被告知要使用三个环节pstree
,/proc/PID/cmdline
和procps
.
http://cygwin.com/ml/cygwin/2007-04/msg00813.html
http://cygwin.com/ml/cygwin/2007-04/msg00817.html
http://cygwin.com/ml/cygwin/2007-04/msg00821.html
但是,我没有找到除procps
Cygwin 32位软件包之外的任何软件包.
即使我安装后procps
,我也不知道如何使用它.我阅读了手册页,但没有得到线索.
有人可以帮忙吗?
例如,使用该wmic
命令,我可以看到带参数的完整过程.
C:\Users\test1>wmic process get ProcessID, Commandline /format:csv |grep cmd
OSWIN7VC10-32B1,"C:\Windows\system32\cmd.exe" ,2904
OSWIN7VC10-32B1,C:\Windows\system32\cmd.exe /c c:\ostore74\src\osci\scripts\buil
d_test\nt\batch_conf\winnt_vc100_weekly.bat >C:\Users\test1\AppData\Local\Tem
p\s1io.4 2>C:\Users\test1\AppData\Local\Temp\s1io.5,3968
OSWIN7VC10-32B1,C:\Windows\system32\cmd.exe /c C:\apache-ant-1.7.1\bin\ant.bat -
Djboss.home=C:\ostore74\tmp\javaee\jboss-4.2.3.GA -emacs -k -f C:\ostore74\src\j
mtl\build.xml overnight >> \\ostorenas\odi\ostore_platform_logs\ostore\7.4
.0\test1\winnt_vc100\2013-10-18-1720\unit_retail_jmtl.log 2>&1,1864
OSWIN7VC10-32B1,"C:\Windows\system32\cmd.exe" ,604
OSWIN7VC10-32B1,grep cmd,2064
Run Code Online (Sandbox Code Playgroud)
但是,使用Cygwin ps
命令.
C:\Users\test1>ps -efW |grep cmd
0 2904 0 ? Oct 17 C:\Windows\System32\cmd.exe
0 3968 0 ? Oct …
Run Code Online (Sandbox Code Playgroud) 如果我ps ax
在终端中,结果将是这样的:
PID TT STAT TIME COMMAND
1 ?? Ss 2:23.26 /sbin/launchd
10 ?? Ss 0:08.34 /usr/libexec/kextd
11 ?? Ss 0:48.72 /usr/sbin/DirectoryService
12 ?? Ss 0:26.93 /usr/sbin/notifyd
Run Code Online (Sandbox Code Playgroud)
如果我这样做echo $(ps ax)
,我得到:
PID TT STAT TIME COMMAND 1 ?? Ss 2:23.42 /sbin/launchd 10 ?? Ss 0:08.34 /usr/libexec/kextd 11 ?? Ss 0:48.72 /usr/sbin/DirectoryService 12 ?? Ss 0:26.93 /usr/sbin/notifyd
Run Code Online (Sandbox Code Playgroud)
为什么?
如何保留换行符和制表符?
我有一个在后台运行的进程(sh脚本),我想知道是否可以查看此进程的输出而不必中断它.
该过程由某些应用程序运行,否则我会将其附加到屏幕上供以后查看.可能需要一个小时才能完成,我想确保它正常运行且没有错误.
是否有ps
(或类似工具)显示pthread名称的方法?我写了以下简单的程序:
// th_name.c
#include <stdio.h>
#include <pthread.h>
void * f1() {
printf("f1 : Starting sleep\n");
sleep(30);
printf("f1 : Done sleep\n");
}
int main() {
pthread_t f1_thread;
pthread_create(&f1_thread, NULL, f1, NULL);
pthread_setname_np(f1_thread, "f1_thread");
printf("Main : Starting sleep\n");
sleep(40);
printf("Main : Done sleep\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个命令/实用程序(如ps
)可用于显示上述程序的线程及其名称.
$ /tmp/th_name > /dev/null &
[3] 2055
$ ps -eLf | egrep "th_name|UID"
UID PID PPID LWP C NLWP STIME TTY TIME CMD
aal 31088 29342 31088 0 2 10:01 pts/4 …
Run Code Online (Sandbox Code Playgroud) 如何获得*nix命令" ps " 的全宽结果?
我知道我们可以指定类似的东西,--cols 1000
但无论如何我可以在列中打印出所有内容吗?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main() {
int res = system("ps ax -o pid -o command | grep sudoku | grep gnome > /dev/null");
printf("res = %d \n", res);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想sudoku
通过检查system()
(或任何其他调用)的返回代码来查看是否正在运行.我不想在任何地方打印任何输出.
system()
即使在查看手册页后,我也不太了解返回代码
无论是否sudoku
正在运行,我明白了res = 0
.
有没有办法argv[0]
在Haskell程序中设置(比如用ghc编译的程序)?
我在System.Environment中找到了getProgName
和withProgName
函数,但它似乎没有改变什么ps
报告(Ubuntu).
import System.Environment
main =
do name <- getProgName
putStrLn $ "Hello, my name is " ++ name
withProgName "other" $ do
newname <- getProgName
putStrLn $ "Name now set to " ++ newname
putStrLn "What is your name: "
-- allow time to run ps
ans <- getLine
putStrLn $ "Pleased to meet you, " ++ ans
Run Code Online (Sandbox Code Playgroud) 我使用ps ef
并ps rf
不少.
以下是一个示例输出ps rf
:
PID TTY STAT TIME COMMAND
3476 pts/0 S 0:00 su ...
3477 pts/0 S 0:02 \_ bash
8062 pts/0 T 1:16 \_ emacs -nw ...
15733 pts/0 R+ 0:00 \_ ps xf
15237 ? S 0:00 uwsgi ...
15293 ? S 0:00 \_ uwsgi ...
15294 ? S 0:00 \_ uwsgi ...
Run Code Online (Sandbox Code Playgroud)
而今天我只需要在脚本中检索uwsgi 的主进程(所以我只需要15237但不需要15293也不需要15294).
截至今天,我尝试了一些ps rf | grep -v ' \\_ '
......但我想要一个更清洁的方式.
我也来自unix.com论坛的另一个解决方案: …