As part of a slightly complex script, I need to tell a server to run a simulation. Normally, I would achieve this by doing ssh user@server \'simulation/script\'
at doesn't use seconds, only minutes/hours/days
What you can do is precede your script with nohup, which will ensure the script isn't killed when you disconnect your SSH session.
ssh server 'nohup yourscript.sh &'
NOTE: Having just played with the above, the SSH connection has to be killed manually.
Another alternative would be screen
screen -d -m yourscript.sh
This will launch a detached screen process that you can reattach to at any time later.
NOTE: I've tested this with the following script and command and it worked perfectly.
SSH command
ssh server.com 'screen -d -m ~/myscript.sh'
myscript.sh
#!/bin/sh
sleep 10
echo "hello world" > /tmp/hello
exit;
Just to note: in man at, I saw there is a -t switch, which will accept date times with seconds - but unfortunately the seconds will be truncated:
$ date; date --date="now +10 seconds" +"%m%d%H%M.%S"; echo "logger AAAA" | at -t $(date --date="now +5 seconds" +"%Y%m%d%H%M.%S")
Thu Feb 5 14:45:57 CET 2015
02051446.07
warning: commands will be executed using /bin/sh
job 8 at Thu Feb 5 14:46:00 2015
... and so the job may actually be scheduled in the past (also, used logger to syslog, because it doesn't look like echoing to terminals' stdout can work from here)