ubantu关闭了命令行窗口后,让脚本继续运行
在Ubuntu系统中,可以使用nohup命令让脚本在后台运行,并且不被关闭命令行窗口的操作影响。具体实现步骤如下:
-
打开终端,执行以下命令:
nohup ./your_script.sh > /dev/null 2>&1 &
在这个命令中,nohup命令用于在后台运行指定的脚本,
./your_script.sh
为需要运行的脚本路径,
> /dev/null 2>&1
用于将脚本的输出重定向到空设备,从而避免在关闭命令行窗口时出现错误提示信息。最后的&表示在后台运行该命令。 -
执行命令后,脚本会在后台运行,即使关闭了命令行窗口,脚本也会继续执行。如果需要查看脚本的输出信息,可以使用以下命令:
tail -f nohup.out
在这个命令中,
tail命令
用于查看文件末尾的若干行内容,-f参数表示实时刷新显示文件的最新内容,
nohup.out
为脚本输出的日志文件,默认情况下会在当前目录下生成。执行命令后,终端会实时显示脚本的输出信息,直到手动终止该命令。
查看当前进程
ps -ef
查看指定后缀执行文件的进程
.py
是指python文件,如果需要查看指定的文件是否在运行,则把文件名加上
ps -ef | grep .py
执行后输出如下,出现
python3 main-run.py
表示该程序正在运行
root 801 1 0 09:46 ? 00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root 2460 1 0 10:05 pts/0 00:00:00 python3 main-run.py
root 3111 2949 0 10:22 pts/1 00:00:00 grep --color=auto .py
查看指定字段文件的进程ID
auto
是指查询文件名包含
auto
这个字符串的进程ID,直接返回进程ID,
pgrep -f auto
结束进程
-
如果是当前窗口正在运行的进程,直接
Ctrl+C
即可结束杀死该进程 -
如果是已经在后台运行的,只能通过
进程ID
来结束
比如某个
进程ID
为
2460
,执行以下命令即可。
-9
是横杆加数字九,后面跟着进程ID,正常执行后没有任何返回值kill -9 2460
执行
python
程序
python
python3 test.py
执行
nodejs
程序
nodejs
node test.js
自动重启进程
-
program_path
是控制目标进程的文件路劲 -
nohup python3 $program_path > /dev/null 2>&1 & # 重启Python程序
控制执行
shell命令
。
#!/bin/bash
program_path="main-run.py" # 指定需要重启的程序路径
process_num=$(ps -ef | grep "$program_path" | grep -v grep | wc -l) # 检查程序是否在运行
if [ "$process_num" -eq 0 ]
then
flag=1
else
flag=0
fi
while true
do
process_num=$(ps -ef | grep "$program_path" | grep -v grep | wc -l) # 检查程序是否在运行
if [ "$process_num" -eq 0 ]
then
if [ $flag == 0 ]
then
count=0
fi
flag=1
echo "程序未运行,正在重启...$((count*10)) S"
nohup python3 $program_path > /dev/null 2>&1 & # 重启Python程序
else
if [ $flag == 1 ]
then
count=0
fi
flag=0
echo "程序正在运行...$((count*10)) S"
fi
count=$((count+1))
sleep 10 # 等待10秒后再次检查程序状态
done
执行过程,中途被结束或者异常退出时会自动重启
root@hecs-235304:~/serverRoom/tcpServerSysterm-3routGateway# ./auto-run-tcpServer.sh
程序正在运行...0 S
程序正在运行...10 S
程序正在运行...20 S
程序正在运行...30 S
程序正在运行...40 S
程序正在运行...50 S
程序正在运行...60 S
程序正在运行...70 S
程序未运行,正在重启...0 S
程序正在运行...0 S
监控自动重启js程序
www
是一个没有后缀的执行程序
nodemon --watch . --ext www --exec 'forever restartall'
链接下载
wget [url]