Solaris中ps无法显示完整cron任务命令,如何获取完整命令?
如何通过ps获取完整的进程执行命令
我来帮你搞定这个ps命令截断参数的问题~你遇到的情况是因为ps输出有宽度限制,导致长命令行被截断了,下面给你几个可行的解决办法:
方法1:增加ps的输出宽度参数
你当前用的是/usr/ucb/ps(BSD风格的ps),这类ps可以通过重复w参数来提升输出宽度,每个w都会让输出更宽。你可以把命令改成:
/usr/ucb/ps -auwwwwxxxx | egrep "connectivity_script.sh"
多添加几个w,通常ww或者www就足够显示完整的命令行了,不用再加cat,egrep已经能过滤出你要的内容啦。
方法2:直接读取proc文件系统(最可靠)
Linux系统下,每个进程的完整命令行参数都存在/proc/[PID]/cmdline文件里,这里的内容是直接从内核获取的,不会被截断。步骤如下:
- 先找到目标进程的PID:
或者用更简便的ps -ef | grep connectivity_script.sh | grep -v greppgrep:pgrep -f connectivity_script.sh - 读取该进程的cmdline文件,并用
tr把参数间的null分隔符转换成空格:
比如PID是1234的话,就是:cat /proc/[你的PID]/cmdline | tr '\0' ' '
这样就能看到完整的命令行,包括你的cat /proc/1234/cmdline | tr '\0' ' 'abc/abc.prop配置文件参数了。
补充说明
为什么原来的ps命令会截断?因为ps默认会根据终端宽度限制输出长度,即使你用了几个w,如果命令行太长还是会被截断,而读取/proc下的文件是绕过这个限制最直接的方式,也是我最推荐的方法~
内容的提问来源于stack exchange,提问作者LearningCpp
相关产品推荐
相关产品推荐

