sh ./xxx.sh & 命令 与 nohup sh ./xxx.sh & 命令 区别

1、文兴一言

sh ./xxx.sh & 和 nohup sh ./xxx.sh & 这两个命令都用于在后台运行脚本,但它们之间存在一些关键的区别,特别是在脚本对终端会话(或称为“挂起”)的依赖性和日志管理方面。

1. sh ./xxx.sh &

  • 作用:这个命令使用 sh 解释器来执行当前目录下的 xxx.sh 脚本,并且通过在命令末尾添加 & 符号,将这个进程放入后台执行。
  • 依赖:这个命令启动的脚本依赖于当前的终端会话。如果终端会话被关闭(比如你注销或关闭了终端窗口),那么由这个会话启动的后台进程(包括这个脚本)可能会收到 SIGHUP 信号并被终止。这是因为很多 shell 默认会向它们启动的所有后台进程发送 SIGHUP 信号,当终端会话结束时。
  • 日志:默认情况下,脚本的输出(标准输出和标准错误)会发送到启动它的终端。但是,因为脚本被放入了后台,你可能无法立即看到这些输出,除非你手动地将其重定向到文件或其他地方。

2. nohup sh ./xxx.sh &

  • 作用:这个命令同样使用 sh 解释器来执行 xxx.sh 脚本,并通过 nohup 命令和 & 符号,将这个进程放入后台执行,同时忽略所有的 SIGHUP 信号。
  • 依赖:与直接使用 & 不同,nohup 命令使得即使终端会话被关闭,脚本也会继续运行。nohup 命令设计用于在用户注销或终端会话结束时,让程序继续运行。
  • 日志:默认情况下,nohup 会将脚本的标准输出和标准错误重定向到一个名为 nohup.out 的文件中(除非你在命令中指定了其他文件)。这意味着你可以稍后在文件中查看脚本的输出,而无需担心它们会丢失或因为终端关闭而无法查看。

总结

  • 如果你希望在终端关闭后脚本仍然继续运行,并且想要保存其输出到一个文件中,那么应该使用 nohup sh ./xxx.sh &
  • 如果你不关心终端关闭后脚本是否继续运行,或者你想要自己处理脚本的输出(例如,通过重定向到特定文件),那么 sh ./xxx.sh & 可能就足够了。但请注意,这种情况下,如果终端关闭,脚本可能会因为收到 SIGHUP 信号而被终止。

2、 案例-启动 rabbitmq_server

首先cd 到 rabbitmq 安装目录

cd  /XXXXX/rabbitmq_server-3.6.9/sbin/

然后 

nohup ./rabbitmq-server &> rabbitmq-server.log &

这样就避免了 关闭终端,而关闭进程的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慧香一格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值