У меня есть несколько программ SAS
test1_2.sas
test3_4.sas
test7_8.sas
и я надеюсь, что nohup
эти скрипты сразу. Я попытался создать оболочку-обертку, такую как test.sh
:
#test running multiple files
testing1_2.sas &
testing3_4.sas &
и я пробовал вызывать nohup sas test.sh &
и nohup test.sh &
. Обе команды говорят мне, test.sh
что не находится в текущем каталоге, хотя он явно сохранен в папке.
Я все еще новичок в написании скриптов оболочки и хотел бы получить помощь в поиске правильного способа запуска nohup
нескольких программ SAS. Спасибо!
решение1
Я не большой поклонник nohup (вместо этого я использую disown), но если вы поставите «nohup» перед каждой командой в скрипте оболочки, то это выполнит часть вашего вопроса, касающуюся nohup.
Однако я думаю, что ваши файлы — это программы SAS? Если вы хотите, чтобы SAS запускался параллельно на каждой программе SAS:
nohup sas test1_2.sas &
nohup sas test3_4.sas &
etc.
Это позволит запускать независимые команды SAS, каждая со своей собственной программой SAS.
Продолжая команду nohup, если они производят вывод, они все будут писать в nohup.out одновременно. Чтобы предотвратить это, записывайте вывод и сообщения об ошибках в отдельный файл для каждой команды:
nohup sas test1_2.sas > output1_2.file 2>&1 &
nohup sas test3_4.sas > output3_4.file 2>&1 &
etc.
Добавлен код из комментариев:
Чтобы вызвать команду test.sh, выполните следующие действия:
bash test.sh
(где «bash» — ваша любимая оболочка) или пометьте его как исполняемый:
chmod +x test.sh
Поскольку вы новичок, убедитесь, что вы правильно ответили на свой вопрос, и нажмите на галочку.