Linux 运维必看:后台启动命令,入门只需 5 分钟

Linux 运维必看:后台启动命令,入门只需 5 分钟

在 Linux 运维工作中,nohup、&和重定向是实现程序后台稳定运行的核心工具。搞清楚它的原理,使用合适的组合与技巧,工作中就可以掌控后台进程。

一、核心工具作用:nohup、&、重定向

nohup:全称 “no hang up”,让程序忽略终端关闭时的 SIGHUP 终止信号,确保终端断开后进程继续运行。单独使用会占用终端,需配合&。

&:将程序转入后台运行,不阻塞终端,可继续输入命令。但单独使用时,终端关闭后进程会终止,必须与nohup搭配。

重定向:管理程序输出,避免日志混乱。常用符号:

  • >:覆盖写入文件;>>:追加写入

  • 2>:重定向错误输出(stderr)

  • 2>&1:合并错误与标准输出(stdout)

  • /dev/null:丢弃输出,不保存日志

二、实际运维工作中的组合方案

1. 基础方案:默认输出

1
nohup 命令 &#输出默认写入nohup.out

适用于临时测试,如写一个检测内网某个应用的页面是否正常访问的perl脚本,然后后台执行:

图片

执行后返回 PID(如截图的7886),脚本正常执行完成,日志可通过ca命令查看,如果程序不是立即完成的,可通过tail -f nohup.out滚动查看。

2. 标准方案:分离输出

需区分正常与错误日志时,用nohup 命令 > 标准日志 2> 错误日志 &,适用于生产环境。示例:

1
nohup node server.js > server.log 2> server_error.log &

3. 简化方案:合并输出

无需区分日志时,用nohup 命令 > 合并日志 2>&1 &。示例:

1
nohup ./backup.sh > backup.log 2>&1 &

4. 纯净方案:丢弃输出

无日志需求时,定向到/dev/null:

1
nohup ./monitor > /dev/null 2>&1 &

三、进程管理技巧

  1. 查看进程

    1
    jobs -l #查看当前终端后台任务,显示编号与 PID,切换终端失效。ps aux | grep 关键词 #查看系统所有进程,如ps aux | grep python3,不受终端限制。
  2. 终止进程

1
2
3
正常终止:kill PID(如kill 12345)
强制终止:kill -9 PID(用于无响应进程)
按任务编号:kill %任务编号(仅当前终端有效)

四、常见问题解决

  1. 程序启动即终止:检查命令路径(用绝对路径)、依赖是否缺失,先前台执行验证;
  2. 日志不生成:确认重定向顺序(正确:> log.log 2>&1),排查目录权限(用touch test.log测试);
  3. 终端关闭进程终止:确保加nohup,含管道命令需用括号包裹(如nohup (cmd1 | cmd2) > log.log 2>&1 &)。

总而言之,nohup保活(关闭终端也可运行)、&实现后台运行、重定向管理日志,三者组合是 Linux 后台运行程序的关键。根据场景选择方案,结合jobs、ps、kill管理进程,可大幅提升运维效率。

https://mp.weixin.qq.com/s/16JAboLkisen4vEbd6WLOw