⑴上面的结果显示,尽管通过 ps -ef 命令看到的命令行显示是相同的,但操作系统仍然会记录该进程的启动信息。
⑵、直接通过脚本名调用时,OS认为进程对应的程序名就是脚本名,因为进程是通过脚本名启动的。 、如果通过 perl 或 shell 加载脚本名的方式调用时,操作系统会认为进程的程序名称是 perl/shell,而脚本名则是做为进程的参数传入,因为此时进程是通过perl/shell启动的。
⑶至于操作系统是如何区分出这两种方式的呢,这里对比两种启动方式下的 /proc/$pid 目录: 、直接通过脚本名调用时,/proc/$pid 目录下内容如下: cmdline文件中内容为: usr/bin/perl -w /home/M/m_yancyliu/tmp/test.pl stat文件内容为:
⑷ (test.pl S
⑸、通过 perl 加载脚本名时,/proc/$pid 目录下内容如下:
⑹cmdline文件中内容为: usr/bin/perl -w /home/M/m_yancyliu/tmp/test.pl
⑺stat文件内容为:
⑻ (perl S
⑼显然,我们使用 ps 命令看到的进程统计信息,是与 /proc/$pid/cmdline中看到的一致。 而在进程的cpu统计信息 /proc/$pid/stat 中看到的内容则是不同的,这里标识了操作系统认可的程序名称,即进程是如何启动的。上面第一个数字均为进程ID。
⑽于是,根据进程的CPU活动统计信息,killall命令能够区分两种不同的方式启动的进程,从而做出不同的处理。 对于这两种启动方式引起的不同,在使用 killall 命令时要注意,在使用命令行启动进程时也要注意。
⑾以上就是Linux使用kill命令的注意事项了,kill命令已经很有力度了,居然还有个killall(杀死全部,这也真够了。