繁体   English   中英

程序完成后如何使用Mutt向我发送通知

[英]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命令通过管道muttmutt ,然后将其用作邮件内容。 -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM