Screen based solution
Start the server like this:
# screen -d -m -S ServerFault tr a-z A-Z # replace with your server
screen will start in detached mode, so if you want to see what's going on, run:
# screen -r ServerFault
Control the server like this:
# screen -S ServerFault -p 0 -X stuff "stop^M"
# screen -S ServerFault -p 0 -X stuff "start^M"
# screen -S ServerFault -p 0 -X stuff "^D" # send EOF
(this answer is based on sending text input to a detached screen from the Unix & Linux sibling site)
Explanation of the parameters:
-d -m
Start screen in detached mode. This creates a new session but doesn’t attach to it. This is useful for system startup scripts.
-S
sessionname
Set the name of the new session to sessionname.
-r
[pid.tty.host]
-r
sessionowner/[pid.tty.host]
Resume a detached screen session.
-p
number_or_name|-|=|+
Preselect a window. This is useful when you want to reattach to a specific window or you want to send a command via the -X
option to a specific window.
-X
Send the specified command to a running screen session e.g. stuff.
stuff
[string]
Stuff the string string in the input buffer of the current window. This is like the paste
command but with much less overhead. Without a parameter, screen will prompt for a string to stuff. You cannot paste large buffers with the stuff
command.
tmux based solution
Start the server like this:
# tmux new-session -d -s ServerFault 'tr a-z A-Z' # replace with your server
tmux will start in detached mode, so if you want to see what's going on, run:
# tmux attach-session -t ServerFault
Control the server like this:
# tmux send-keys -t ServerFault -l stop
# tmux send-keys -t ServerFault Enter
# tmux send-keys -t ServerFault -l start
# tmux send-keys -t ServerFault Enter
# tmux send-keys -t ServerFault C-d # send EOF
Explanation of the parameters:
new-session
[-AdDEPX] [-c start-directory] [-e environment] [-f flags] [-F format] [-n window-name] [-s session-name] [-t group-name] [-x width] [-y height] [shell-command]
(alias: new
)
Create a new session with name session-name.
The new session is attached to the current terminal unless -d is given. window-name and shell-command are the name of and shell command to execute in the initial window.
send-keys
[-FHlMRX] [-N repeat-count] [-t target-pane] key
(alias: send
)
Send a key or keys to a window. Each argument key is the name of the key (such as 'C-a' or 'NPage') to send; if the string is not recognised as a key, it is sent as a series of characters. All arguments are sent sequentially from first to last.
The -l flag disables key name lookup and processes the keys as literal UTF-8 characters. The -H flag expects each key to be a hexadecimal number for an ASCII character.