以下脚本用于杀死在登录节点中运行作业的PID(占用更多内存)。同时我们需要向用户发送邮件,告知你的工作被杀死了。我们有用户ID列表& s&邮件ID
需要帮助以管理邮件ID发送特定用户cc的邮件。
apple apple@gmail.com
mango 123@ymail.com
cat cat@hotmail.com
etc...
[root@localhost ~]# cat test_script.in
#!/bin/sh
output=$(ps axu | awk -v OFS='\t' '{print $1, $2, $3, $4, $11}' | sort -k4 -nr |head -5| awk '{print $2}'| awk 'NR==2')
user=$(ps axu | awk -v OFS='\t' '{print $1, $2, $3, $4, $11}' | sort -k4 -nr |head -5| awk '{print $1}'| awk 'NR==2')
details=$(ps axu | awk -v OFS='\t' '{print $1, $2, $3, $4, $11}' | sort -k4 -nr |head -5| awk '{print $5}'| awk 'NR==2')
kill -9 $output
msg="Hi $user \n you are running jobs in login nodes\n process id $output \n job details $details"
echo -e $msg |mail -s "pls dont run jobs in login nodes" XXXXXXX ## need help here###
[root@localhost ~]#}
你可以帮助我们,
答案 0 :(得分:0)
以下for / done循环行可以在bash和sh中同时输入一行的用户/地址行。
但是,我在这里显示的用户和电子邮件解析行只能在bash中使用。如果您不想使用bash,如果需要将行拆分为用户和电子邮件,可以用awk替换它们。
for n in `cat emails_addresses.txt`; do {
user=${n## *}
email=${n%%* }
#
# send e-mail using $email here
#
done
如果你使用我在bash中显示的字符串删除功能,请注意*之前的空格和一行中的*之后的空格。星号' *'是一个通配符,上面的行分别从字符串的开头和结尾删除指示的模式,以产生用户和电子邮件。