Все, что вам нужно что-то вроде этого:
cd /home/program/K_10 && nohup Rscript program_1.R> program_1_out.txt;
echo "The job /home/program/K_10/program_1.R is finished" |mutt "[email protected]" -s "Your job"
, то есть в сценарии первого выполнения задания, а затем (в последовательности) отправить почту на себя. Команды echo
вводят в mutt
, который использует его как содержимое почты. Опция -s
устанавливает вопрос почты.
приятнее способ сделать это было бы поставить суть команд в сценарий, что-то вроде этого:
#!/bin/sh
cd $(dirname $1) && nohup Rscript $(basename $1) > $(basename $1 .R)_out.txt;
echo "The job $1 is finished" |mutt "[email protected]" -s "Your job"
и (называя этот файл run-job
), вызовите его
run-job /home/program/K_10/program_1.R
разбив его немного:
run-job
назван так, чтобы намекнуть на функцию сценария. Имена сценариев не имеют условного соглашения (это зависит от разработчика). Некоторые используют суффикс ".sh"
для имен, чтобы сделать их тип более очевидным, но это не является существенным.
- Суффикс
".R"
является еще одним соглашением об именах, но может потребоваться Rscript
. В любом случае, это часть существующего имени файла.
- - параметр (или аргумент), данный сценарию. Более полный скрипт может проверить (a), если параметр присутствует, и (b), если параметр соответствует существующему файлу, но эти шаги опущены, чтобы сохранить его простым.
- В
$(dirname $1)
возвращается /home/program/K_10
и
$(basename $1 .R)
принимает, что /home/program/K_10/program_1.R
и возвращает program_1
.
- Для этого простого сценария можно взять части имени пути и использовать их для создания более общего сценария, чем использование только буквенных команд.
nohup
неловко здесь; Я бы переместил его из сценария. Затем вы можете напрямую контролировать способ запуска скрипта, например.,
nohup run-job /home/program/K_10/program_1.R &
При создании сценария, таких как run-job
, вы должны помнить, чтобы сделать это:
- сделать его исполняемым, например,
chmod u+x run-job
либо поместить скрипт в директорию на вашем $PATH
(например, $HOME/bin
на многих системах) или позаботиться о его вызове, используя свой путь. Например, если он находится в текущем каталоге, вы можете просто сделать
nohup ./run-job /home/program/K_10/program_1.R &
Для изоляции проблем (или моя опечатка, или какая-то другая причина), оболочка обеспечивает след функцию (фактический команды будут напечатаны по мере их запуска). Чтобы включить трассировку, изменить первую строку сценария
#!/bin/sh -x
Способ отправки почты обычно с помощью 'mail' команды. Вы говорите, что вам не разрешено использовать команду 'mail', но вы все равно хотите отправлять почту? (Mutt является MUA и не доставляет почту.) –
@GregHewgill Вы правы. ИТ-ребята сказали, что я могу использовать только «mutt». –
@GregHewgill Я думаю, 'mutt' может отправить почту. –