Linux nohup後臺執行程式
Linux nohup後臺執行程式
需求:
儲存已滿,需要刪除過時資料
條件:
資料比較大,刪除需要很長時間,直接執行刪除命令肯定不行,因為視窗一旦關閉,命令就死掉;那麼就讓它執行也不行,因為這臺電腦可能有其他維護公司也會用此電腦,這也不安全。所以需要後臺執行該程式
步驟思路:
1:檢視需要刪除的資料
2:編輯刪除指令碼
3:後臺執行指令碼(有多個指令碼,每個視窗最好只執行一個)
4:檢視執行的後臺程序
5: fg %n將後臺指令碼調到前臺執行
6:驗證是否在後臺執行
7:終止後臺執行的刪除指令碼
操作方法
(01)檢視需要刪除的資料[root@NAS dj]# df -h檔案系統 容量 已用 可用 已用% 掛載點/dev/sda3 192G 5.6G 177G 4% //dev/sda1 190M 12M 169M 7% /boottmpfs 3.9G 0 3.9G 0% /dev/shm/dev/sdb1 9.0T 7.0T 1.6T 82% /var/www/html/dj/dev/sdb2 11T 9.9T 113G 99% /var/www/html/djbk需要刪除的資料:/var/www/html/dj/2012/var/www/html/djbk/2013
(02)編輯刪除指令碼[root@NAS script]# cat rm_#!/bin/bashrm -rf /var/www/html/dj/2012[root@NAS script]# cat rm_#!/bin/bashrm -rf /var/www/html/djbk/2013注意:編輯完指令碼後需要賦予指令碼執行許可權
(03)後臺執行指令碼(有多個指令碼,每個視窗最好只執行一個)[root@NAS script]# nohup ./rm_ &[root@NAS script]# nohup ./rm_ &注意:執行指令碼的時候,兩個指令碼不要在同一個視窗執行,如果在同一個視窗執行,下個執行命令需要等待前面一個執行完成才能執行,這種效率不是我們要的
(04)檢視執行的後臺程序jobs 只能檢視當前視窗的後臺程序,如果關閉了後臺執行指令碼的視窗,該命令失效,這個時候就只能用到下面的命令檢視ps -ef 可以檢視主機所有執行的程序 ps -ef | grep 過濾條件
(05)fg %n將後臺指令碼調到前臺執行fg %n 將當前後臺執行程式調到前臺執行如果執行完後臺指令碼命令,當前視窗沒有關閉,可以執行jobs檢視當前視窗執行的後臺程序的程序號,再通過fg %n,將此後臺程序調到前臺執行,如果不想執行該指令碼,直接ctl +c 關閉該視窗
(06)驗證是否在後臺執行關閉該連線工具後在開啟檢視,這時候jobs已經不能使用,只能通過以下方式檢視後臺執行的指令碼是否正在執行[root@NAS script]# ps -ef | grep rmroot 2331 89 0 Nov02 ? 00:00:00 [ib_inform]root 23792 1 0 09:53 ? 00:00:00 /bin/bash ./rm_ot 23793 23792 0 09:53 ? 00:00:23 rm -rf /var/www/html/dj/2012root 23797 1 0 09:55 ? 00:00:00 /bin/bash ./rm_ot 23798 23797 0 09:55 ? 00:00:23 rm -rf /var/www/html/djbk/2013root 23998 23889 0 10:36 pts/1 00:00:00 grep rm
(07)終止後臺執行的刪除指令碼刪除命令:kill -9 程序號注意:刪除的時候不能刪除查詢查詢命令,否則會照成關機