如何让脚本继续后台运行,哪怕关掉了终端

发布于 2022-08-29 19:55:25 字数 950 浏览 23 评论 0

先贴出我的 shell 脚本(listen.sh

#!/bin/bash
WEBPATH=/path/to/site
while true
do
    killall 'nc' >/dev/null 2>&1
    nc -l 10086 | while read line
    do
        pass=`cat /dev/urandom | head -1 | md5sum | head -c 8`
        echo $pass>/root/userpass/${line}.txt
        echo $pass>>/root/userpass/${line}.txt
        useradd -d ${WEBPATH}/super_${line}_appjx_cn -g root ${line} 
        cat /root/userpass/${line}.txt | passwd ${line} >/dev/null 2>&1
        /usr/bin/php /root/addpass.php ${line} ${pass} >/dev/null 2>&1
        cd ${WEBPATH}
        chmod 775 ${WEBPATH}/super_${line}_appjx_cn
        killall 'nc' >/dev/null 2>&1
    done
done

尝试了以下方法:

./listen.sh &
nohup ./listen.sh &
/root/listen.sh &

但都无法达到要求。而且很奇怪的是,这样执行之后,ps能够看到两个listen.sh进程,一时搞不懂是为什么。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

凤舞天涯 2022-09-05 19:55:25

我用的是screen

小霸王臭丫头 2022-09-05 19:55:25
  • tmux / screen
  • nohup xxx &
  • xxx &! (bash / zsh)
  • setsid xxx

如果需要保留输出,或者脚本太脆弱遇到输入输出错误就挂掉,记得进行适当的重定向。

另外,就像有人提到的,你也许需要的是 supervisord 这类工具而不是你说的需求。参见 X-Y Problem | 酷 壳 - CoolShell.cn

挽清梦 2022-09-05 19:55:25

简单的比如nohup

group@vps:~$ nohup ./shadowsocks-server-linux64-1.1.1 -c config.json &

其它的可以用supervisord, 推荐

梦罢 2022-09-05 19:55:25

screen
tmux
VNC
...

孤独患者 2022-09-05 19:55:25

我觉得用crontab也可以实现,比如:
0 12 30 8 * cd [脚本目录];./listen.sh &
不过,这里可能有个问题,就是到明年8月30号又会启动一次

绝影如岚 2022-09-05 19:55:25

node里应该还有一个叫做forever的npm

A simple CLI tool for ensuring that a given script runs continuously (i.e. forever

https://github.com/nodejitsu/forever

上面的各位,nohup还有东西没有写完整哦

nohup command > myout.file 2>&1 &

是伱的 2022-09-05 19:55:25

screen是最简单的

挽梦忆笙歌 2022-09-05 19:55:25

常用办法 都被大家说了, 应该还有一种方法是忽略 SIGTERM 信号。

桃气十足 2022-09-05 19:55:25

tmux 和screen——Linux从业者必备利器

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文