一、nohup是什麼
nohup是Linux系統中自帶的命令,能夠將一個指定的命令或腳本執行在後台,並不受終端的關閉影響。即使終端關閉或斷開網絡連接,進程仍然在後台運行。
基本語法:nohup Command &
nohup command & //使用實例: nohup ./test.sh &
二、使用場景
在日常生產中,我們經常需要執行一些比較耗時的操作,比如大量文件的拷貝、大數據量的備份等。由於這些操作比較耗費時間,如果不使用nohup命令,就需要等待終端命令的執行結果;而使用nohup命令後,進程將後台運行,不影響我們的其他操作,也不會因為終端關閉而停止。
三、實例演示
以備份數據庫為例演示nohup的使用。
1、先創建一個用於備份的腳本:
#!/bin/bash database=demo backup_path=/opt/backup/mysqldump time=`date +%Y%m%d_%H%M%S` suffix=".sql" dumpfilename=$backup_path/$database-$time$suffix /usr/bin/mysqldump -u root $database > $dumpfilename
2、執行備份腳本:
sh mysql_backup.sh dumpfile saved at /opt/backup/mysqldump/demo-20211211_132803.sql
3、修改腳本使用nohup命令後台執行:
nohup sh mysql_backup.sh & //執行後返回類似以下信息: [1] 6599 nohup: ignoring input and appending output to 'nohup.out'
4、將nohup命令輸出到指定文件:
nohup sh mysql_backup.sh > /opt/backup/log/mysql_backup.log 2>&1 &
四、注意事項
1、當耗時較長的進程運行時,使用nohup命令後,在原始目錄下會出現一個nohup.out文件。這個文件是nohup自動生成的,用來存儲輸出到終端的信息。如果你不想輸出到該文件中,可以使用“>”符號將輸出重定向到其他文件中。
2、nohup命令一般用於長時間運行的任務,如備份、上傳、下載等命令。在運行耗時較短的命令時,反而容易出現問題(如滿足不了預期),而且這些問題比較難以排查。
3、nohup命令無法用於交互式進程,如SSH會話等。
五、總結
nohup命令是一個實用的Unix/Linux命令,可以在終端關閉後使進程繼續後台運行,解決了很多日常操作需求的問題。在使用nohup命令時,需要注意以上注意事項,可以更好的發揮nohup的作用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309385.html