내 bashrc
에 작은 기능이있어서 스크립트를 실행하고 완료되면 출력을 내 이메일로 보낼 수 있습니다. 코드는 다음과 같다 : 기능이두 개의 명령이있는 bash nohup
run ./script.sh arg1 arg2 output
처럼 사용
run() {
[email protected]
last="${!#}"
rest="${@:1:($#-1)}"
(nohup $rest &> $last < /dev/null; mail -s "$rest" "$email" < "$last") &
}
그것은 대부분의 시간을 작동하는 것 같군,하지만 때로는 이메일이 스크립트가 완료하더라도 전송되지 않습니다 . 나는 그것이 서버 터미널을 닫는 것과 관련이 있다고 생각한다. 이 경우 스크립트는 nohup
으로 인해 계속 실행 중이지만 마지막에 이메일을 보내지 않습니다. 제대로 작동하려면 몇 가지 포인터를 정말 고맙게 생각합니다.
'$ {@ : 1 : ($ # - 1)} ""나쁜 생각이다 - 당신은 스칼라에서 인자 벡터를 정확하게 표현할 수 없다. ('$ {@ : 1 : ($ # - 1)} ')')'을 사용하여'rest = $ {rest [@]} "'(또는 단일 인수 제목 줄'$ {rest [*]} ''... 또는 더 정확하게'printf -v rest_cmd'% q ' "$ {rest [@]}"', "$ rest_cmd"를 메일 인수로 사용) –
팁 주셔서 감사합니다. – skd