03-监控进程并自动拉起脚本

脚本:监控程序并自动拉起

比如手机上跑 alist 服务时,程序会被莫名 kill 掉,所以需要监控并拉起,间隔为 60s:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

now=`date '+%Y-%m-%d %H:%M:%S'`
grepFlag='alist'
thisLog='./alistlog'
sleepTime=60s

while [ 0 -lt 1 ]
do
now=`date '+%Y-%m-%d %H:%M:%S'`
ret=`ps aux | grep "$grepFlag" | grep -v grep | wc -l`
if [ $ret -eq 0 ]; then
echo "$now $grepFlag not exists, restart now..." >> "$thisLog"
alist server 2>&1 &
echo "$now restart done..." >> "$thisLog"
else
echo "$now $grepFlag exists, sleep $sleepTime." >> "$thisLog"
fi
sleep $sleepTime
done

附:开机自启设置

要让一个脚本开机自动执行,可以通过在Linux的crontab中添加相应的命令来实现:

  1. 打开终端,输入命令:crontab -e 进入crontab编辑模式。
  2. 在编辑模式中,输入命令:@reboot /path/to/your/script.sh,其中/path/to/your/script.sh表示你要执行的脚本的路径。这样就可以让该脚本在开机后自动执行了。

如果要执行一次该脚本,只需要在终端中输入脚本的路径即可,例如:/path/to/your/script.sh

如果要每次开机都执行该脚本,可以将上述命令添加到/etc/rc.local文件中,具体步骤如下:

  1. 打开终端,输入命令:sudo vi /etc/rc.local,进入rc.local文件编辑模式。

  2. 在文件中添加/path/to/your/script.sh命令,注意要在exit 0之前添加。

  3. 保存文件并退出编辑模式。

  4. 重启系统,该脚本就会在每次开机后自动执行了。

前置或者后置操作(否则无法生效):

1
2
3
4
5
6
7
# ll /etc/rc.local 
lrwxrwxrwx 1 root root 13 May 22 14:10 /etc/rc.local -> rc.d/rc.local
# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 499 Oct 12 14:26 /etc/rc.d/rc.local
# chmod 777 /etc/rc.d/rc.local
# ll /etc/rc.d/rc.local
-rwxrwxrwx. 1 root root 499 Oct 12 14:26 /etc/rc.d/rc.local

推荐使用 systemctl 加一个自动启动的单元。


03-监控进程并自动拉起脚本
https://janycode.github.io/2024/04/14/02_编程语言/03_Shell/03-监控进程并自动拉起脚本/
作者
Jerry(姜源)
发布于
2024年4月14日
许可协议