Se você puder colocar scripts que executam esses trabalhos de longa duração para você na máquina remota, isso se torna muito fácil:
#!/bin/bash
# This script will run a long-running-job (if it's not already running)
# and email when it completes.
lockfile=/var/run/long-job-1.lock
logfile=$(mktemp)
errfile=$(mktemp)
if [[ -f "$lockfile" ]]; then
echo "This job is already running." 1>&2
exit 1
else
echo $$ > "$lockfile"
trap 'rm -f "$lockfile" "$logfile" "$errfile"' EXIT
fi
/path/to/some/really/longrunning/job.sh
returncode=$?
if [[ 0 -ne "$returncode" ]]; then
cat "$errfile" | mailx -s "Job failed with exit code $returncode" -a "$logfile" [email protected]
else
cat "$logfile" | mailx -s "Job succeeded" [email protected]
fi
Coloque esse script no servidor remoto em seu diretório inicial como longjob1.sh
. Então, localmente, você pode:
ssh username@remotehost "screen -dmS LongJob1 ./longjob1.sh"
O script (e a tarefa que ele invoca) será executado em uma sessão screen
no servidor remoto e o enviará por e-mail quando isso for feito. Se sair com erro, você receberá um email com o log de erros, com o log padrão anexado ao email.