我想从我的系统中删除我为执行任务而打开的所有屏幕。但我需要摆脱那些什么都不做的屏幕。我不想因为屏幕里发生了什么事而毁掉屏幕。
例如,我在一个名为screen3的屏幕中运行了一个长命令,而名为screen1和screen2的屏幕是以前的屏幕,它们内部没有运行作业。目标是拥有一个自动清理user1和user2的命令或脚本(在crontab中(。
首次尝试-仅检测
screen -wipe > /dev/null
screen_pids=$(screen -ls | grep Detached | awk '/.*t/ {print strtonum($1)}')
for scr_pid in $screen_pids
do
bash_child=$(ps -el | grep $scr_pid | grep bash | awk '{print $4}')
if [ $(pgrep -P $bash_child | wc -l) -eq "0" ]; then
# in that case screen $scr_pid could be killed
echo "The screen $scr_pid doesn't have any child process and should be terminated"
fi
done