有没有办法检查屏幕会话是否正在 bash 中运行?
例如:
if [screen is running]
then
screen -r #if session is running then resume the session
else
screen "command" #else start a new session
fi
Run Code Online (Sandbox Code Playgroud)
利用PPID(Parent PID) 环境变量,并从
$ ps -fp$PPID
UID PID PPID C STIME TTY TIME CMD
w3 19305 19304 0 00:00 ? 00:00:00 SCREEN
+w3@aardvark:~(0)$
Run Code Online (Sandbox Code Playgroud)
或者,
ps -fp$PPID | head -n 2 | tail -n 1 | egrep -q SCREEN
screen_is_running=$((1 - ${PIPESTATUS[-1]}))
# screen_is_running == 1 for yes, 0 for No, -1 for egrep error
Run Code Online (Sandbox Code Playgroud)
当然,如果您已经生成、执行、nohup 或其他操作,并且使您的屏幕$PPID不被屏蔽,那么这将不起作用。
如果是这种情况,您可以使用pgrep,构建pstree一些egrep可以沿着$PPID链返回的东西(当为 1 时停止$PPID)。
| 归档时间: |
|
| 查看次数: |
13066 次 |
| 最近记录: |