Вы захотите использовать:
$ cat /etc/*-release
Вы получите ответ, подобный этому:
$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"
Когда-то давно я использовал этот простой сценарий оболочки в качестве задания крона, как Вы говорите, в конце дня.
#!/bin/sh
screen -ls \
| awk '/\(Attached\)/{print $1}' \
| while read line ; do
screen -D $line ;
done
Экран -D
(отсоединение питания), также отправляет сигнал ЗАВИСАНИЯ в родительский процесс экрана (обычно закрывающий содержание терминала). Можно использовать -d
(отсоединение), если Вы предпочитаете.
Как @doon замеченный, можно использовать echo $STY
знать, в котором экран - Вы.
Немного более надежная версия, чем andcoz':
#! /bin/sh -
tab=$(printf '\t')
screen -ls |
while IFS=$tab read -r session time state; do
[ "$state" = "(Attached)" ] && screen -D "$session"
done
Это все еще не работает при использовании символов табуляции или символов новой строки на имена сессии.