日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

终止进程的方法总结(使用)

發布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 终止进程的方法总结(使用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ctrl+c

沒錯,這應該是你最常用到的方法了,當前終端非后臺運行一個程序后,使用ctrl+c
即可終止當前程序。

ctrl+z

這種方式不算完全終止,更像是暫停,因為它可以通過fg或者bg繼續執行。
舉個例子,代碼如下:

#include<stdio.h> int?main(void) {int?i?=?0;for(i?=?0;i?<?100;i++){printf("%d\n",i);sleep(1);}return?0; }

編譯運行到一定程序后,按下ctrl+z:

$?gcc?-o?test?test.c $?./test 0 1 2 ^Z [1]+??Stopped?????????????????./hello root@ubuntu16:c$?fg ./hello 3 4 5 root@ubuntu16:c$?

在ctrl+z之后,再輸入fg或者bg,你會發現它接著上次的地方繼續運行。

kill

這是最常見也是最常用的了,雖然它名為kill,但實際上它可以給進程發送各種類型的信號,其中信號9就是比較常用的,即用來終止進程。

$?kill?-9?pid

kill用于給進程發信號,上面的命令表示給進程id為pid的程序發送9信號。
常見信號如下:

  • HUP ? ? 1 ? ?終端斷線

  • INT ? ? ? 2 ? ?中斷(同 Ctrl + C)

  • QUIT ? ?3 ? ?退出(同 Ctrl + \)

  • TERM ? ?15 ? ?終止

  • KILL ? ? ?9 ? ?強制終止

  • CONT ? 18 ? ?繼續(與STOP相反, fg/bg命令)

可以看到信號KILL就是強制終止程序。

你也可以通過這樣來查看這些數字的意義:

$?kill?-l?9 KILL $?kill?-l1)?SIGHUP?????2)?SIGINT???3)?SIGQUIT??4)?SIGILL???5)?SIGTRAP6)?SIGABRT?????7)?SIGBUS???8)?SIGFPE???9)?SIGKILL?10)?SIGUSR1 11)?SIGSEGV????12)?SIGUSR2?13)?SIGPIPE?14)?SIGALRM?15)?SIGTERM

killall

killall進程殺死進程,它在某些情況下會失效,具體可以參考《killall為什么找不到你的進程》
它還支持殺死一定時間的進程,例如殺死運行超過30分鐘的hello進程:

$?killall?-o?30m?hello

其中-o表示older-than,當然你還可以用-y,表示yonger-than。
m表示分鐘,還有其他的時間刻度:

  • s ? ?秒

  • m ? ?分鐘

  • h ? ?小時

  • d ? ?天

  • w ? ?周

  • M ? ?月

  • y ? ?年

它除了可以根據名字還可以根據正則表達式來殺死進程。使用-r參數即可。

pkill

pkill也可以根據進程名殺死進程,它和killall有點類似。

$?pkill?hello

由于你可能起了多個hello程序,所以為了殺死最舊的進程,你可以這樣做:

$?pkill?-o?hello?#oldest

或者殺死最新的進程:

$?pkill?-n?hello?#newest

或者計算運行的hello程序的數量:

$?pkill?-c?hello

如何查找進程id

上面提到的有些命令需要根據pid進行操作,如何獲取pid呢?也有幾種常見的方法。

ps

這是最常見的的了,可以參考《ps命令實例詳解》

pidof

pidof可以直接獲取某個進程的進程id,也比較準確:

$?pidof?hello 7584

結合kill可以這樣用:

$?kill?-9?`pidof?hello`

是不是一氣呵成?

pgrep

它同樣可以通過名字直接獲取到進程id:

$?pgrep?hello 19971 24770

top

top 的結果中也可以看到各個進程的進程id。

總結

本文僅對一些常見終止進程方式進行簡單介紹,更多用法可以參考對應手冊。
但是這些操作都有著同樣的本質,那就是給進程發送信號,而進程通常對這個信號的處理是終止程序或者被迫終止。所以如果你想要實現優雅退出,可以試著給進程發特定信號,在收到該信號后,進程做善后處理,然后退出。

摘自:守望先生

總結

以上是生活随笔為你收集整理的终止进程的方法总结(使用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。