我试图在bash脚本中运行几个命令但是它会挂起我的命令等待它完成(它不会)。这个脚本只是确保它的运行。
#!/bin/bash
ps cax | grep python > /dev/null
if [ $? -eq 0 ]; then
echo "Process is running."
else
echo "Process is not running... Starting..."
python likebot.py
echo $(ps aux | grep python | grep -v color | awk {'print $2'})
fi
一旦进入python命令,它就会在执行命令时挂起。它直到我给cid之前我cntrl c。无论如何我可以让它运行这个bash脚本并在命令运行后退出bash脚本(无需等待它们完成)。
答案 0 :(得分:7)
通常,如果要执行命令而不是等待命令,则只需使用&
作为分隔符而不是;
或换行符。执行此操作时,该过程的pid可用于特殊变量!
中的shell。如果您想等待该过程完成,可以使用wait
。如果您不想等待它,那么只需省略wait
即可。在你的情况下:
python likebot.py & # Start command asynchronously
echo $! # echo the pid of the most recent asynchronous process
答案 1 :(得分:2)
由于看起来像机器人应该一直在运行,你可能也想要考虑'nohup',裸机和这份工作仍然是你登录过程的孩子,如果死亡就会死去。