我正在linux服务器上使用nohup命令运行我的flask应用程序。我试图将PID数字保存为变量,或者只保存输出的PID数字。
例如,如果我在下面的命令中使用nohup运行我的flask_application
nohup python /home/app/run_flask.py > /home/temp/run_flask.out 2> /home/temp/run_flask.err &
这将在后台组中成功运行,我检查我的pid运行是否通过
ps -ef | grep /home/app/run_flask.py
我的服务器会退回这个
farid 108708 1 0 23:50 pts/0 00:00:00 python /home/app/run_flask.py
farid 112265 83174 0 23:52 pts/0 00:00:00 grep --color=auto /home/app/run_flask.py
我试图将PID捕获为变量或将其保存到文件中,它是112265,这样我就可以将其包含在我的shell脚本中,以在特定条件下杀死进程。我怎样才能做到这一点?
我已经尝试过使用这个命令,我能够打印出112265,但我不确定我不能通过添加"test1=ps ef…"将其存储为变量如果这是正确的方法。命令使用
ps -ef | grep /home/app/run_flask.py | tr -s ' ' | cut -d ' ' -f2 | tail -1
您可以在运行nohup
命令后立即捕获命令的PID并存储到变量中。
nohup python /home/app/run_flask.py > /home/temp/run_flask.out 2> /home/temp/run_flask.err &
var=$!
或者保存到文件
nohup python /home/app/run_flask.py > /home/temp/run_flask.out 2> /home/temp/run_flask.err &
echo $! > saved_pid.txt
您可以这样做:
VAR=$(ps -ef | grep something_u_want | grep -v grep | awk '{print $2}')
然后VAR
将保存该数字。
在您的示例中,112265是grep进程的PID。您可能应该在之后运行grep -v grep
来排除它。