Все, что вам нужно сделать, это зайти в каждый каталог вашего 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 была помещена в отдельную переменную, чтобы сделать сценарий более читабельным.
Решено комментарием Стивена Харриса о $ 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