Ваша команда запускает конвейер процессов в фоновом режиме, поэтому вызывающий скрипт сразу же завершится (или очень скоро после этого).Это заставит ssh закрыть соединение.Это, в свою очередь, приведет к отправке SIGHUP
любому процессу, подключенному к терминалу, для которого была создана опция -t
.
Ваш time ./myprog
процесс защищен nohup
, поэтомуон должен продолжать бежать.Но ваш mutt
нет, и это, вероятно, проблема здесь.Я предлагаю вам изменить вашу командную строку на:
nohup sh -c "time ./myprog $1 >my.log && mutt -a ${1%.*}/`basename $1` -a ${1%.*}/`basename ${1%.*}`.plt $2 < my.log 2>&1 " &
, чтобы весь конвейер был защищен.(Если это не помогает, может потребоваться что-то сделать с файловыми дескрипторами - например, у mutt могут возникнуть другие проблемы с отсутствующим терминалом - или же может потребоваться настройка в зависимости от параметров - но попробуйтесейчас ...)