【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命令查看。

版权声明:本文为博主作者:AsrielMao原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/AsrielMao/article/details/129862518

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2024年1月11日
下一篇 2024年1月11日

相关推荐