systemd can be used to run your application as a daemon

A nice feature of systemd is the scripts could be daemonized without any modifications of the scripts like standard stdin, stdout, stderr to be redirected to null (and even in some languages is not that simple!).
So if you want to run your ordinary script as daemon under a systemd linux distro, create a systemd service file in

/etc/systemd/system/myscript.service

Replace “myscript” with the nme of your script.

[Install]
WantedBy=multi-user.target

[Unit]
Description=<my_script_description>
After=syslog.target
After=network.target

[Service]
Type=simple
User=<run_as_user>
Group=<run_as_group_group>
ExecStart=<your_path_and_script_name_here>

# Give the script some time to startup
TimeoutSec=300
#EnvironmentFile=/etc/<filename>

[Install]
WantedBy=multi-user.target

So change the following according your needs:

  • <my_script_description> – description of your script/program with couple of words
  • <run_as_user> – the user under which will be executed
  • <run_as_group_group> – the group under which will be executed
  • <your_path_and_script_name_here> – the absolute path and filename to the script or program to be executed
  • Uncomment “EnvironmentFile” line if you would like to have different environment file for your script

And then you can run it with

systemctl start myscript

And you can enable it to start at boot

systemctl enable myscript

And also you can see the output of the script on syslog or with

systemctl status myscript

Here is an example of running a python script as a daemon with systemd.
The python script is

/usr/local/bin/mypythonscript.py

and the service name is

/etc/systemd/system/mypythonscript.service

Description=My python script daemon
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/python /usr/local/bin/mypythonscript.py

# Give the script some time to startup
TimeoutSec=300

[Install]
WantedBy=multi-user.target

And you can see handful of information for the state of your script with

systemctl status mypythonscript

The uptime of your script and output if any

* mypythonscript.service
   Loaded: loaded (/etc/systemd/system/mypythonscript.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-01-04 13:58:34 UTC; 1 months 12 days ago
 Main PID: 29654 (python)
   CGroup: /system.slice/mypythonscript.service
           `-37421 /usr/bin/python /usr/local/bin/mypythonscript.py

Jan 12 10:05:21 srv.local systemd[1]: [/etc/systemd/system/mypythonscript.service:3] Assignment outside of section. Ignoring.
Jan 12 10:05:21 srv.local systemd[1]: [/etc/systemd/system/mypythonscript.service:1] Assignment outside of section. Ignoring.

GNU Screen with scrolling history under X window system

Screen program is really a good piece of software for every one in the console. We use it every day to execute programs in the “background” or if we want to end our ssh session to the server without stopping our executed program. We need a tiny configuration to use our favorite scrolling of the console program under the X windowing systems!

So if you are under let’s say KDE or Gnome (especially Ubuntu and CentOS) and use konsole or xterm and you want to be able to scroll the history of your ssh sessions, when you start something under gnu screen you must set the following file at your home directory

/home/<your_user>/.screenrc

with this configuration:

termcapinfo xterm* ti@:te@