Some terminal programs have a quit keystroke to safely stop their execution, for example:
Q+Enter
From this question I learned that the timeout
command allows to send signals to a program after a specified amount of time but, as far as I know, none of those signals is equivalent to the quit keystroke that I am referring to.
The list of signals can be shown with the command kill -l
:
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
I would like to send the quit keystroke (echo
the letter q
) to a program after a certain period of time in order to stop a program safely.
How can I do it?
Q
and enter is a common way to quit a program... PressingCtrl+D
is far more common for programs that reads from standard input. A program that catches theTERM
signal would additionally be able to gracefully quit if an unqualifiedkill
was done on its PID. What is the program you want to do this for? – Kusalananda Mar 09 '18 at 17:32gnss-sdr
– codeaviator Mar 09 '18 at 17:35(sleep 5; echo q) | cat
– Jeff Schaller Mar 09 '18 at 19:06