当前位置: 首页 > 科技观察

如何在Linux系统中结束进程或终止程序

时间:2023-03-19 16:22:49 科技观察

在Linux中有几种方法可以使用命令行或图形界面终止程序。当进程失败时,您可能希望中止或终止该进程。在本文中,我们将探讨在命令行和GUI中终止进程或应用程序,这里我们使用gedit作为示例程序。使用命令行或字符终端界面Ctrl+C(如果没有使用gedit&命令)从命令行调用gedit程序的一个问题是shell会话被阻塞,无法释放命令迅速的。在这种情况下,Ctrl+C(Ctrl和C的组合键)会很好用。这将终止gedit并且所有工作都将丢失(除非文件已保存)。Ctrl+C向gedit发送SIGINT信号。这是一个默认的进程终止停止信号,它指示shell停止gedit运行并返回到main函数的循环,使您返回到提示符。$gedit^CCtrl+Z叫做挂起字符。它向进程发送SIGTSTP信号。它也是一个停止信号,但默认行为不是杀死进程,而是挂起进程。以下命令将停止(终止/中断)gedit运行并返回到shell提示符。$gedit^Z[1]+Stoppedgedit$一旦进程被挂起(以gedit为例),你就不能在gedit中写任何东西。并且在后台,该进程变成了一个作业,可以使用jsbs命令进行验证。$jobs[1]+Stoppedgeditjobs允许您在单个shell会话中控制多个进程。您可以根据需要终止、恢复作业或将其移至前台或后台。让我们在后台恢复gedit,释放运行其他命令的提示符。您可以使用bg命令后跟作业ID来执行此操作(请注意上面的作业命令显示的[1],这是作业ID)。$bg1[1]+gedit&这类似于使用gedit&直接启动程序:$gedit&使用killkill命令提供对信号的精确控制,允许您通过指定信号名称或信号向进程发送信号编号,后跟进程ID或PID。我喜欢kill命令的一件事是它还能够根据作业ID控制进程。让我们使用gedit&命令在后台启动gedit服务。假设我通过jobs命令获得了一个gedit作业ID,让我们向gedit发送一个SIGINT信号:$kill-sSIGINT%1作业ID需要以%为前缀,否则kill会将其视为PID。kill仍然可以在没有明确指定信号的情况下工作。在这种情况下,默认情况下会发送中断进程的SIGTERM信号。执行kill-l查看信号名称列表,使用mankill命令阅读手册。如果您不想使用特定的作业ID或PID,请使用killall,killall允许您使用特定的进程名称。中断gedit使用killall最简单的方法是:$killallgedit它将终止所有名为gedit的进程。与kill类似,默认发送的信号是SIGTERM。使用-I选项忽略进程名称的大小写。$gedit&[1]14852$killall-IGEDIT[1]+Terminated请参阅gedit手册以了解有关killall命令选项(例如-u)的更多信息。您是否遇到过播放器崩溃,如VLC灰屏或使用xkill挂起?现在你可以像上面那样获取进程的PID来杀死它,或者使用xkill命令来杀死应用程序。使用xkillxkill允许您使用鼠标关闭窗口。只需在终端中执行xkill命令,它会将鼠标光标更改为X或小骷髅图标。单击要关闭的进程窗口上的x。小心xkill,正如手册所说,它很危险。我警告过你!有关上述命令的更多信息,请参阅手册。您还可以继续探索pkill和pgrep命令。