Самый простой способ - использовать команду at
. Поскольку at позволяет использовать временную спецификацию, вы можете использовать ее так:
at 12:00 PM tomorrow + 30 minutes
Итак, в вашем случае вы хотели бы использовать что-то вроде этого:
at 12:00 PM tomorrow + $(($RANDOM % 120)) minutes
После ввода этой команды вы можете ввести свои команды, например ls
и завершите с помощью ctrl + d
. Если вы не знакомы с командой at, прочтите этот учебник .
expect
может регистрировать транзакцию сеанса и может оставаться без присмотра после некоторого начального взаимодействия. Это позволит вам запустить команду, взаимодействовать с ней, а затем набрать ~.
, чтобы передать все на expect
, пока программа не завершит работу. Между тем, out.1535209800
или что-то еще можно проверить.
#!/usr/bin/env expect
log_file out.[clock seconds]
spawn -noecho sh ;# here be the command to run
interact {
~. { return } ;# type this when done interacting
~~ { send "~" } ;# or this to get a literal ~ in the shell
}
if {[catch {
expect {
eof { exit }
match_max { exp_continue }
timeout { exp_continue }
}
} oops ]} { puts stderr $oops; exit 1 }