[英]How to use mutt to send me notification when program is finished
我正在使用Linux。 我希望计算机在使用mutt
完成程序后向我发送电子邮件(学校不允许我们使用mail
)。 我试过mutt
,效果很好。
我使用以下shell脚本运行程序
cd /home/program/K_10 && nohup Rscript program_1.R> program_1_out.txt;
程序完成后,如何使我发送电子邮件。 电子邮件应具有The job /home/program/K_10/program_1.R is finished
。 另外,如果可以的话,您能帮我附加/home/program/K_10/program_1.txt
,这是program_1.R
的结果? 我对Linux很陌生。
您需要的是这样的:
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 "your@email" -s "Your job"
也就是说,在脚本中首先执行作业,然后(按顺序)向自己发送邮件。 echo
命令通过管道mutt
给mutt
,然后将其用作邮件内容。 -s
选项设置邮件的主题 。
更好的方法是将命令的要点放入脚本中 ,如下所示:
#!/bin/sh
cd $(dirname $1) && nohup Rscript $(basename $1) > $(basename $1 .R)_out.txt;
echo "The job $1 is finished" |mutt "your@email" -s "Your job"
和(调用该文件run-job
),通过调用它
run-job /home/program/K_10/program_1.R
分解一下:
run-job
以暗示脚本的功能 。 脚本名称没有设置约定(取决于开发人员)。 有些人在名称上使用".sh"
后缀,以使其类型更加明显,但这不是必需的。 ".R"
是另一个命名约定,但Rscript
可能需要。 无论如何,它都是现有文件名的一部分。 $1
是给脚本的参数 (或参数 )。 一个更完整的脚本可能会检查(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 &
为了隔离问题(我的错字或其他原因),shell提供了跟踪功能(实际命令将在运行时打印出来)。 要打开跟踪,请将脚本的第一行更改为
#!/bin/sh -x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.