nohup
大约 2 分钟
nohup
相关信息
nohup 是 Linux 系统中用于在后台运行进程并忽略挂起信号(SIGHUP)的命令,即使终端关闭或用户退出登录,进程仍会持续运行。
基本命令
后台启动
在命令前添加 nohup,末尾添加 & 符号即可将进程放入后台:
nohup command & # 默认输出到当前目录的 nohup.out 文件
- 若当前目录不可写入,则输出重定向到 $HOME/nohup.out。
- 关闭终端后,进程仍会继续运行。
指定输出文件
通过 >
重定向输出到自定义文件:
nohup command > custom.log & # 标准输出写入 custom.log
日志输出控制
合并标准输出和错误输出
使用 2>&1 将错误输出(stderr)与标准输出(stdout)合并到同一文件:
nohup command > output.log 2>&1 & # 所有输出(含错误)写入 output.log[3,6,7](@ref)
忽略所有输出
若不需要日志,可将输出重定向到空设备 /dev/null:
nohup command > /dev/null 2>&1 & # 丢弃所有输出[5,6](@ref)
仅保留错误日志
nohup command > /dev/null 2>error.log & # 错误日志写入 error.log[5,6](@ref)
进程管理
查看进程状态
通过 ps 或 pgrep 查找进程 ID(PID):
ps -ef | grep command
pgrep -a command
终止进程
kill -9 PID # 强制终止进程[3,4](@ref)
# 按端口终止
kill $(lsof -t -i:8801 -sTCP:LISTEN) # 默认发送SIGTERM(15),允许进程清理资源[4](@ref)
高级技巧
多命令组合
结合 bash -c 执行多个命令:
nohup bash -c 'command1 && command2' > log.txt 2>&1 &[3,7](@ref)
调整优先级
nohup nice -n 19 command > output.log 2>&1 & # 设置较低优先级[1](@ref)
注意事项
日志文件管理
- 默认日志文件 nohup.out 会持续追加内容,需定期清理或使用 > 覆盖写入。
- 清空日志文件:cat /dev/null > nohup.out
安全性
- 避免运行不可信脚本,防止恶意进程常驻后台