Экранная сессия, запущенная из rc.local, не видна в screen -ls под root

Все, что вам нужно сделать, это зайти в каждый каталог вашего parent_directory и запустить команду java. Чтобы вернуться к parent_directory, используйте:

cd ..

Чтобы получить список каталогов в parent_directory, вы можете использовать:

find -mindepth 1 -maxdepth 2 -type d

Он перечислит только каталоги и только для одного уровня вложенности.

Цикл выглядит так:

cmd="java8 -jar /picard.jar CollectRnaSeqMetrics REF_FLAT=/refFlathuman.refflat STRAND_SPECIFICITY=NONE I=acc.bam O=output"
for path in `find -mindepth 1 -maxdepth 2 -type d` 
do
    cd "$path"
    $cmd
    cd ..
done

Команда Java была помещена в отдельную переменную, чтобы сделать сценарий более читабельным.

1
12.07.2016, 00:41
1 ответ

Решено комментарием Стивена Харриса о $ SCREENDIR.

В сценарии запуска создайте экран -ls> /tmp/xyzzy.$$ (или аналогичное имя файла) - это сообщит вам, в каком каталоге хранятся сокеты . Возможно, вам потребуется настроить $ SCREENDIR так, чтобы он указывал на этот каталог, чтобы видеть сеансы при попытке повторного подключения. - Стивен Харрис 10 часов назад

rc.local использовал / var / run / screen / S-root как SCREENDIR

root использовал / root / screen ] как SCREENDIR, поэтому он не видел сеансов из rc.local

Примечание:

Нет необходимости добавлять screen -ls> /tmp/xyzzy.$$ в rc.local, чтобы найти, в какой папке используется как SCREENDIR. Это можно увидеть, выполнив systemctl status rc-local , он покажет что-то подобное в выводе

rc.local[3258]: No Sockets found in /var/run/screen/S-root.

После выполнения export SCREENDIR = / var / run / screen / S -root screen -ls показывает экраны, запущенные с rc.local

0
29.04.2021, 00:12

Теги

Похожие вопросы