在 Solaris 中不打印具有长命令行的作业:
bash-3.2$ /usr/ucb/ps auxwww | grep ftf | awk '{print $NF}' | head -5
/proj/cmp01/app/btws/cfg/btw
/proj/cmp01/app/btws/cfg/btw
/proj/cmp01/app/btws/cfg/btw
/proj/cmp01/app/btws/cfg/btw
/proj/cmp01/app/btws/cfg/btw
bash-3.2$ /usr/ucb/ps -alxww | grep -v "alxww" | grep ftf | grep -v grep|head -5
0 39548 737 693 0 50 20 5112 3952 603110c3e70 S ? 249:55 /usr/bin/bash
/proj/cmp01/app/ftf/bin/ftf.sh -y -c /proj/cmp01/app/btws/cfg/btw
0 39548 906 871 0 50 20 4568 3488 6034bfbf348 S ? 245:12 /usr/bin/bash
/proj/cmp01/app/ftf/bin/ftf.sh -y -c /proj/cmp01/app/btws/cfg/btw
0 39548 2512 2480 0 50 20 4552 3544 603d5120df8 S ? 134:04 /usr/bin/bash
/proj/cmp01/app/ftf/bin/ftf.sh -y -c /proj/cmp01/app/btws/cfg/btw
0 39548 2523 2496 0 50 20 4728 3688 602fcee1d28 S ? 135:43 /usr/bin/bash
/proj/cmp01/app/ftf/bin/ftf.sh -y -c /proj/cmp01/app/btws/cfg/btw
0 39548 2557 2535 0 50 20 4472 3480 603df1e0838 S ? 133:48 /usr/bin/bash
/proj/cmp01/app/ftf/bin/ftf.sh -y -c /proj/cmp01/app/btws/cfg/btw
它正在删除部分配置文件。
我也无法使用pargs
:
bash-3.2$ for i in `/usr/ucb/ps -alxww | grep -v "alxww" | grep ftf | grep -v gr
ep| awk '{print $3}'|head -3`; do pargs $i; done
pargs: cannot examine 737: permission denied
pargs: cannot examine 2512: permission denied
pargs: cannot examine 2523: permission denied
bash-3.2$
我检查了这个问题,但我无法得到完整的论点:
答案1
我相信你让它变得比需要的更复杂。不需要awk
或古老版本的ps
命令。
尝试这个:
for x in `ps -ed -o pid=`; do echo -n "$x " ; pargs -l $x; done
或者当打印漂亮时:
for x in `ps -ed -o pid=`; do
echo -n "$x "
pargs -l $x 2>/dev/null # don't want to see err msg for procs that no longer exist
done
这将产生一个输出,其中包含 PID 和所有 cmd 参数,无论多长。然后,如果您愿意,您可以通过该输出进行 grep 操作。
请记住,该pargs
命令需要检查进程,并且可能不允许您对所有进程执行此操作..除非您是 root 或具有同等权限。