How to run application for a set time in shell

If and How is it possible to, in Terminal, to get an application to run for 30 seconds, before being force closed, and echoing the logs of that process?


Solution 1:

You might want to use the timeout command.

timeout -k 10s 30s command

which will run the command for 30s and kill it after 10s if still running. - Check the manpage for more options.

Solution 2:

Here are two ways (but the timeout command suggested by mcantsin is probably better):

  1. Launch the command in the background, that way its PID is saved in $! and you can use that to kill it after the specified time:

    command &
    sleep 30 && kill $!
    
  2. Launch the command and use pkill or killall to kill it. CAUTION: This assumes that only one command with that name is running, I am using firefox as an example:

    firefox &
    sleep 30 && pkill firefox
    

I have no idea what you mean by "the logs of that process" but a process's standard error can be saved to a file with command 2> logfile.txt.