nohup
命令用于在后臺運行程序,即使關閉終端或斷開連接,程序也會繼續運行
重定向輸出到文件:
使用 >
和 >>
操作符將標準輸出和標準錯誤重定向到文件。例如:
nohup your_command > output.log 2>&1 &
這里,your_command
是你要運行的命令,output.log
是輸出日志文件的名稱。2>&1
表示將標準錯誤(2)重定向到標準輸出(1),&
表示將命令放入后臺運行。
限制日志文件大?。?使用 logrotate
工具來限制日志文件的大小。首先,創建一個名為 logrotate.conf
的配置文件,并添加以下內容:
/path/to/your/output.log {
size 10M
rotate 5
compress
missingok
notifempty
create 640 user group
}
這里,size 10M
表示當地日志文件達到10MB時進行輪轉,rotate 5
表示保留5個輪轉日志文件,compress
表示壓縮舊的日志文件,missingok
表示如果日志文件丟失,不要報錯,notifempty
表示如果日志文件為空,不進行輪轉,create 640 user group
表示創建新的日志文件,權限為640,屬主為用戶,屬組為組。
然后,使用 crontab
定期運行 logrotate
。編輯用戶的 crontab
文件:
crontab -e
添加以下行以每天運行一次 logrotate
:
0 0 * * * /usr/sbin/logrotate /path/to/your/logrotate.conf
使用 syslog
或 journald
:
如果你的系統支持 syslog
或 journald
,可以將日志輸出發送到系統日志中。這樣,你可以使用系統工具(如 journalctl
)來查看和管理日志。
例如,要將日志輸出發送到 syslog
,可以使用 logger
命令:
nohup your_command 2>&1 | logger -t your_tag
這里,your_tag
是一個自定義的標簽,用于在日志中識別你的程序的輸出。
通過這些方法,你可以優化 nohup
命令的日志輸出,使其更易于管理和維護。