linux后台任务在退出终端时被杀死,nohup也不行,最后写了个脚本,crontab定时运行解决
起因
在服务器上起了个后台任务,结果在退出终端的时候被杀死了,用nohup也不行,明明前几天还是好的,在网上搜了好久,尝试了各种办法,包括screen均不行,实在没辙,只能自己写了个脚本,定时执行,把程序拉起来。
服务器版本: centos7
1、目标程序
用golang起一个最简单的web服务,监听端口9090,访问时会在页面打印出程序员必备的hello world,程序路径:/root/web
2、写一个简单的启动目标程序的shell脚本
新建一个shell脚本:vim test.sh
#!/bin/bash
echo "定时任务开启了"
webport=$(lsof -i:9090)
if [ ! -n "$webport" ]; then
echo "====web test now restart===="
cd ~
./web &
else
echo "WEB TEST IS NOT NULL"
fi
简单解释一下:
第一行是shell脚本用bash执行,
第三行是将 lsof -i:9090 返回的结果赋值给变量webport,
第四行及以后的 if 判断webport的值是否为空,也就是说9090端口有没有被占用,如果有被占用则证明程序在运