【Linux】Linux系统后台运行脚本方法


前言

我们使用Linux搭建服务器之后,经常需要在服务器上运行一些脚本,例如定期检查网络连通性并保存出错日志等。在写好批处理文件(.sh)文件之后,如果是Ubuntu系统,直接登陆上去之后单独启动一个终端并运行.sh文件就可以了。但是如果是没有GUI的Cent OS的话,在我们断开连接、关闭终端之后,终端上所运行的脚本也会随之终止。
因此,需要使用特定的命令,让脚本即使在终端关闭后也能保持在后台运行。下文所介绍的方法,通用于Ubuntu和Cent OS。


正文

启动脚本

使用命令 nohup sh XXX.sh &>/dev/null &
在这里插入图片描述
执行成功,会返回该进程的id。此时即使关闭终端,该脚本依旧在后台运行。

详解:
①sh XXX.sh为执行该脚本。
②在命令末尾加上&符号,表示将该命令放到后台运行。但此时该命令的标准输出、错误输出仍在前台。
③>/dev/null 表示将输出重定向到/dev/null中。/dev/null是一个特殊文件,会将传入其中的数据全部丢弃,即删除掉。

  • 因为重定向默认参数为1,即>/dev/null相当于1>/dev/null,将标准输出重定向到其中,而错误输出(异常信息)仍在控制台正常输出。
  • 如果想要只输出标准输出,忽略错误输出,则使用2>/dev/null。
  • 如果想两者都忽略,则使用>/dev/null 2>&1,这也可以简写为&>/dev/null,也就是最上方示例中所用的。
  • 上一条顺序不能反过来变成2>&1 >/deb/null,这种用法的效果是只输出错误输出,而标准输出被重定向到/dev/null中丢弃了,相当于只写了>/dev/null。

④nohup 表示在终端关闭后,此命令不接受挂起信号,仍保持运行。

查看正在运行的脚本

使用命令 ps -ef |grep XXX.sh
在这里插入图片描述
若该脚本正在运行中,此处会有2条进程信息:第一条为脚本进程,第二条为此命令本身。每行的第二个数据(如3403和3431)即为该进程的id。

详解:
①ps(process status) 默认只会显示运行在当前控制台下,属于当前用户的进程。
②-e 等同于-A,显示所有进程。
③-f 显示完整格式的输出
④| 将左侧的输出结果,作为右侧的输入
⑤grep(Global search REgular expression and Print out the line),文本搜索工具
⑥XXX.sh 需要搜索的文本

结束脚本运行

使用命令 kill -15 [进程id]
在这里插入图片描述
详解:
①kill -15 终止进程。若无法正常终止,可以改用kill -9 强制删除进程。
②[进程id] 在脚本启动时自动生成,也可通过ps命令查看。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值