Linux:後臺執行程式
今天同事要執行一個作業,要求一直在linux伺服器後臺執行,於是想起使用nohup 命令。
at
at命令允許使用者向cron守護程式提交作業,使其在稍後的時間執行。一旦一個作業被提交,at命令將會保留所有當前的環境變數,包括路徑,不像crontab只提供預設的環境。該作業的所有輸出都將以電子郵件的形式傳送給使用者,除非你對其輸出進行了重定向。
和crontab一樣,根使用者可以通過/etc目錄下的at.allow和at.deny檔案來控制哪些使用者可以使用at命令,哪些使用者不行。
at命令格式:at [-f script] [-m -l -r] [time] [date]
-f:表示要提交的指令碼或命令。
-l:列出當前所有等待執行的作業。
-r:清除作業,如果想清除某個作業,要提供相應的作業標識(ID)。
-m:作業完成後給使用者發郵件。
time:at命令的時間格式非常靈活,可以是H、HH、HHMM、HH:MM或H:M,其中H和M分別是小時和分鐘。還可以使用a.m或p.m。
例子:
$ at 23:59
at> find /tmp -mtime +3 | xargs rm -rf
按ctrl + D結束編輯
以下時間格式,at命令都是可以接受的:
at 10.47am
at now + 1 hour
如果希望向at命令提交一個shell指令碼,可以使用類似下面命令:
at 10:00am -f /home/wang/backdb.sh
&
當在前臺執行某個作業時,不想被該作業佔據終端,可以使用&命令,形式為:command &
這樣就把該作業放到後臺執行。
不過作業在後臺執行一樣會將結果輸出到螢幕上,我們可以使用輸出重定向到某個檔案:command >out.command 2>&1 &
上面這個例子,就會將命令的標準輸出和錯誤輸出都重定向到out.command檔案中。其中,2:表示標準錯誤輸出,1:表示標準輸出。2>&1的意思就是標準的錯誤輸出也重定向到out.command2檔案中。
另外,當一個命令在後臺執行的時候,可以用提交命令時所得到的程式號來監控它的執行。在
前面的例子中,我們可以按照提交ps 1時得到的程式號,用ps命令和grep命令列出這個程式:ps | grep 程式號
記住,在用ps命令列出程式時,它無法確定該程式是執行在前臺還是後臺。
如果想殺死後臺程式,可以執行kill 程式號;或者:kill -9 程式號
nohup
如果你正在執行一個程式,而且你想要在退出帳戶時該程式繼續執行,那麼可以使用nohup命令。它是不掛起的意思。
命令形式為:nohup command &
尤其是當執行一個擁有多條命令的指令碼時,看一個例子:
假如有一個指令碼(append.sh)擁有多條shell命令:
nohup ./append.sh > out.append 2>&1 &
那麼這個指令碼的所有標準輸出和標準錯誤輸出都會重定向到out.append檔案中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-678325/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux程式後臺執行實踐Linux
- 讓.py程式後臺執行(Linux)Linux
- Linux後臺執行Linux
- Linux 下後臺執行和按照守護程式方式後臺執行的坑Linux
- Linux 後臺執行命令Linux
- Linux jar包 後臺執行LinuxJAR
- jenkins後臺程式執行Jenkins
- Linux 後臺執行 PHP 指令碼LinuxPHP指令碼
- [linux] 使用Screen後臺執行命令Linux
- Linux nohup:後臺不掛起命令(後臺執行命令)Linux
- 將程式在後臺執行和殺掉後臺的程式
- Linux 技巧:讓程式在後臺可靠執行的幾種方法Linux
- linux後臺執行和關閉、檢視後臺任務Linux
- Linux scp 後臺執行傳輸檔案Linux
- linux後臺執行命令:&與nohup的用法Linux
- XYHCMS 3.6 後臺程式碼執行漏洞
- Springboot 在 Linux 中打包 Jar 包在後臺執行Spring BootLinuxJAR
- 如何在後臺執行 Linux 命令並且將程式脫離終端Linux
- shell後臺執行
- 執行python指令碼後臺執行Python指令碼
- linux中後臺執行程式常用的幾種方法Linux行程
- 大資料開發-linux後臺執行,關閉,檢視後臺任務大資料Linux
- 後臺執行緒(daemon)執行緒
- 還在用nohup? 來試試Supervisor吧 -Linux後臺執行Linux
- 詳解linux後臺、前臺執行程序Linux行程
- linux殺死後臺程式Linux
- windows的nohup後臺執行Windows
- mysql後臺執行緒詳解MySql執行緒
- Mac Redis 服務後臺執行MacRedis
- 使用screen後臺執行任務
- 後臺執行SQL語句(oracle)SQLOracle
- Linux 任務後臺執行軟體【即:終端複用器】之---screenLinux
- Golang 啟停管理及後臺執行Golang
- php後臺定時執行任務PHP
- 如何使用WorkManager執行後臺任務(上)
- java -jar 在後臺執行和關閉JavaJAR
- 批處理檔案 bat 後臺執行BAT
- flutter 寫後臺系統,執行到windowsFlutterWindows
- ionic3最小化並且監控到前臺執行和後臺執行