您好,欢迎来到游6网!

当前位置:首页 > 软件教程 > Linux使用kill命令的注意事项介绍

Linux使用kill命令的注意事项介绍

发布时间:2025-04-28    编辑:游乐网

在linux系统中,kill命令以其直接且强力的终止进程功能而闻名。为了避免误操作,本文将详细介绍使用kill命令时需要注意的事项。

Linux使用kill命令的注意事项介绍

使用kill命令的注意事项

在调试脚本Bug时,你可能会注意到killall命令与kill命令的一个关键区别。假设有一个脚本test.pl,内容如下:

#!/usr/bin/perl -wsleep 60;
登录后复制

测试结果如下:

如果通过/home/MNET/m_yancyliu/tmp/x.pl命令启动,此时ps命令显示的命令行为:/usr/bin/perl -w /home/MNET/m_yancyliu/tmp/x.pl

结果如下:

killall x.pl命令可以终止该脚本。killall perl命令则无法终止该进程。

如果通过/usr/bin/perl -w /home/MNET/m_yancyliu/tmp/x.pl命令启动,此时ps命令显示的命令行为:/usr/bin/perl -w /home/MNET/m_yancyliu/tmp/x.pl

结果如下:

killall perl命令可以终止该进程。killall x.pl命令则无法终止该进程。

此时,如果使用ps uxfww命令查看对应的进程树,会发现两种启动方式的进程树是一样的:

(如果要查看所有进程的进程树,可以使用命令 `ps axfww`)-eash | \_ /bin/bash | \_ /usr/bin/perl -w /home/MNET/m_yancyliu/tmp/test.pl
登录后复制

上述结果表明,尽管通过ps -ef命令看到的命令行显示相同,但操作系统仍然会记录该进程的启动信息。

当直接通过脚本名调用时,操作系统认为进程对应的程序名就是脚本名,因为进程是通过脚本名启动的。当通过perl或shell加载脚本名的方式调用时,操作系统认为进程的程序名称是perl/shell,而脚本名则作为进程的参数传入,因为此时进程是通过perl/shell启动的。

操作系统是如何区分这两种方式的呢?我们可以通过比较两种启动方式下的/proc/$pid目录来理解:

直接通过脚本名调用时,/proc/$pid目录下内容如下:

cmdline文件内容为:usr/bin/perl -w /home/MNET/m_yancyliu/tmp/test.plstat文件内容为:
12242 (test.pl) S 3102 12242 3102 9472041 12242 8396800 456 0 3 0 0 0 0 0 18 0 1 0 357357658 4358144 361 4294967295 134512640 135656772 3215679088 3215678100 3084573003 0 0 128 0 3741425540 0 0 17 3 0 0
登录后复制

通过perl加载脚本名时,/proc/$pid目录下内容如下:

cmdline文件内容为:usr/bin/perl -w /home/MNET/m_yancyliu/tmp/test.plstat文件内容为:
13372 (perl) S 3102 13372 3102 9472041 13372 8396800 460 0 0 0 0 0 0 0 18 0 1 0 357376374 4358144 362 4294967295 134512640 135656772 3218100000 3218099012 3084704075 0 0 128 0 3577044868 0 0 17 2 0 0
登录后复制

显然,我们通过ps命令看到的进程统计信息与/proc/$pid/cmdline中看到的一致。而在进程的CPU统计信息/proc/$pid/stat中看到的内容则不同,这里标识了操作系统认可的程序名称,即进程是如何启动的。第一个数字均为进程ID。

因此,根据进程的CPU活动统计信息,killall命令能够区分两种不同的方式启动的进程,从而做出不同的处理。在使用killall命令时要注意,在使用命令行启动进程时也要注意这些差异。

热门合集

MORE

+

MORE

+

关于我们  |  游戏下载排行榜  |  专题合集  |  端游游戏  |  手机游戏  |  联系方式: youleyoucom@outlook.com

Copyright 2013-2019 www.youleyou.com    湘公网安备 43070202000716号

声明:游6网为非赢利性网站 不接受任何赞助和广告 湘ICP备2022003375号-4