nohup命令详解

nohup命令在Linux系统中用于 不挂断地运行命令 ,即使在关闭终端或退出登录后,命令也会继续执行。以下是关于nohup命令的详细解释:

  1. 基本用法
  • nohup命令可以单独使用,也可以在命令后面加上&符号将其放到后台运行。

  • 例如:nohup sh test.sh & 将在后台运行test.sh脚本,并将输出重定向到当前目录下的nohup.out文件。

  1. 输出重定向
  • 默认情况下,nohup命令的输出会被重定向到当前目录下的nohup.out文件。

  • 如果nohup.out文件不可写,输出将被重定向到用户主目录下的nohup.out文件。

  • 可以使用重定向符号>将输出重定向到其他文件,例如:nohup command > myout.file 2>&1 & 将标准输出和标准错误都重定向到myout.file文件中。

  1. 忽略挂断信号
  • nohup命令会忽略所有的SIGHUP信号,这样即使控制终端关闭,命令也会继续运行。

  • SIGHUP信号通常在终端关闭时发送给进程,用于通知进程终止。

  1. 后台任务管理
  • 使用nohup命令启动的后台任务可以通过jobs命令列出,例如:jobs 列出当前会话中的所有后台作业。

  • 可以通过kill命令终止后台任务,例如:kill %1 终止第一个后台任务,或者使用kill 12345终止指定PID的任务。

  1. 配合disown命令
  • 如果已经使用nohup在后台启动了任务,但不想它受到终端关闭的影响,可以使用disown命令解除任务与当前终端的关联。

  • 例如:disown -h %1 将任务%1从当前shell的作业列表中移除,使其不受终端关闭的影响。

  1. 常用选项
  • -c:在使用nohup命令时,如果同时使用了-c选项,那么指定的命令将在启动后立即停止,这个选项通常用于测试nohup命令是否生效。

  • -f:在使用nohup命令时,如果同时使用了-f选项,那么指定的命令将以静默模式运行,即不会向标准输出和标准错误输出任何信息。

  • -q:在使用nohup命令时,如果同时使用了-q选项,那么指定的命令将以静音模式运行,即不会向标准输出和标准错误输出任何信息,这个选项与-f选项类似,但会关闭标准输出和标准错误。

建议

  • 使用nohup命令时,建议将输出重定向到文件,以便于后续查看和管理日志。

  • 如果需要查看后台任务的详细信息,可以使用ps命令结合grep命令进行查找。

  • 在需要长时间运行的任务中,可以考虑使用nohup结合disown命令,以确保任务在终端关闭后仍能继续运行。

Top