Difference between revisions of "Linux: SystemD"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) |
Rafahsolis (talk | contribs) Tag: visualeditor |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | == List all running services == | + | ==List all running services== |
sytemctl | sytemctl | ||
watch "ps -ef|grep service" | watch "ps -ef|grep service" | ||
| − | == Start/stop or enable/disable services == | + | ==Start/stop or enable/disable services== |
systemctl start foo.service | systemctl start foo.service | ||
systemctl stop foo.service | systemctl stop foo.service | ||
| Line 10: | Line 10: | ||
systemctl enable foo.service | systemctl enable foo.service | ||
systemctl disable foo.service | systemctl disable foo.service | ||
| − | == Check if service is enabled == | + | ==Check if service is enabled== |
systemctl is-enabled foo.service; echo $? | systemctl is-enabled foo.service; echo $? | ||
| Line 16: | Line 16: | ||
[https://www.dynacont.net/documentation/linux/Useful_SystemD_commands/ Useful SystemD Commands] | [https://www.dynacont.net/documentation/linux/Useful_SystemD_commands/ Useful SystemD Commands] | ||
| − | == Log to syslog == | + | ==Log to syslog== |
Use the following properties in your systemd service unit file: | Use the following properties in your systemd service unit file: | ||
StandardOutput=syslog | StandardOutput=syslog | ||
| Line 26: | Line 26: | ||
if $programname == '<your program identifier>' then ~ | if $programname == '<your program identifier>' then ~ | ||
| − | == /etc/systemd/system/example.service == | + | ==/etc/systemd/system/example.service== |
| − | + | [Unit] | |
| − | Description=Tenkaichi Vegeta-server (Tentacle) | + | Description=Tenkaichi Vegeta-server (Tentacle) |
| − | After=network.target | + | After=network.target |
| + | |||
| + | [Service] | ||
| + | User=tenkaichi | ||
| + | Group=tenkaichi | ||
| + | WorkingDirectory=/home/tenkaichi/vegetas-server | ||
| + | EnvironmentFile=/tenkaichi/vegeta-server/cfg/environment.cfg | ||
| + | StandardOutput=syslog | ||
| + | StandardError=syslog | ||
| + | SyslogIdentifier=Vegeta-Tentacle | ||
| + | Restart=always | ||
| + | RestartSec=3 | ||
| + | |||
| + | ExecStart=/usr/local/bin/tentacle_server -o -a ${SERVER_IP} -p ${PORT} -s ${INPUT_DIR} -v -m ${MAX_SIZE} -e ${SSL_CERT} -k ${SSL_CERTKEY} | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | |||
| − | + | ==Automatic restart== | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == Automatic restart == | ||
Add the following lines to your service file at Service block | Add the following lines to your service file at Service block | ||
[Service] | [Service] | ||
| Line 57: | Line 56: | ||
... | ... | ||
| − | == Wait Online == | + | ==Wait Online== |
<nowiki>[Unit] | <nowiki>[Unit] | ||
| − | Wants=network-online.target | + | Wants=network-online.target |
| − | After=network.target network-online.target</nowiki> | + | After=network.target network-online.target</nowiki> |
| − | === With NetworkManager === | + | ===With NetworkManager=== |
systemctl enable NetworkManager-wait-online | systemctl enable NetworkManager-wait-online | ||
| − | == Gunicorn == | + | ==ExecStart examples== |
| − | + | ||
| + | ======Gunicorn====== | ||
| + | ExecStart=/virtualenv/path/bin/gunicorn -w3 --timeout 300 --access-logfile /var/log/gunicorn/app-access.log --error-logfile /var/log/gunicorn/app-error.log --bind unix:/sockets/app-socket.sock App.wsgi | ||
| + | |||
| + | ====Flask (superset)==== | ||
| + | <syntaxhighlight lang="text"> | ||
| + | ExecStart=/home/superset/.virtualenvs/superset/bin/gunicorn -w 3 -k gevent --timeout 120 -b unix:/home/superset/.superset/superset.sock --limit-request-line 0 --limit-request-field_size 0 --statsd-host localhost:8125 superset:app | ||
| + | </syntaxhighlight> | ||
Latest revision as of 11:01, 29 March 2019
List all running services[edit]
sytemctl watch "ps -ef|grep service"
Start/stop or enable/disable services[edit]
systemctl start foo.service systemctl stop foo.service systemctl restart foo.service systemctl status foo.service systemctl enable foo.service systemctl disable foo.service
Check if service is enabled[edit]
systemctl is-enabled foo.service; echo $?
Source: Useful SystemD Commands
Log to syslog[edit]
Use the following properties in your systemd service unit file:
StandardOutput=syslog StandardError=syslog SyslogIdentifier=<your program identifier> # without any quote
Then, assuming your distribution is using rsyslog to manage syslogs, create a file in /etc/rsyslog.d/<new_file>.conf with the following content:
if $programname == '<your program identifier>' then /path/to/log/file.log if $programname == '<your program identifier>' then ~
/etc/systemd/system/example.service[edit]
[Unit]
Description=Tenkaichi Vegeta-server (Tentacle)
After=network.target
[Service]
User=tenkaichi
Group=tenkaichi
WorkingDirectory=/home/tenkaichi/vegetas-server
EnvironmentFile=/tenkaichi/vegeta-server/cfg/environment.cfg
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Vegeta-Tentacle
Restart=always
RestartSec=3
ExecStart=/usr/local/bin/tentacle_server -o -a ${SERVER_IP} -p ${PORT} -s ${INPUT_DIR} -v -m ${MAX_SIZE} -e ${SSL_CERT} -k ${SSL_CERTKEY}
[Install]
WantedBy=multi-user.target
Automatic restart[edit]
Add the following lines to your service file at Service block
[Service] ... Restart=always RestartSec=3 ...
Wait Online[edit]
[Unit] Wants=network-online.target After=network.target network-online.target
With NetworkManager[edit]
systemctl enable NetworkManager-wait-online
ExecStart examples[edit]
Gunicorn[edit]
ExecStart=/virtualenv/path/bin/gunicorn -w3 --timeout 300 --access-logfile /var/log/gunicorn/app-access.log --error-logfile /var/log/gunicorn/app-error.log --bind unix:/sockets/app-socket.sock App.wsgi
Flask (superset)[edit]
ExecStart=/home/superset/.virtualenvs/superset/bin/gunicorn -w 3 -k gevent --timeout 120 -b unix:/home/superset/.superset/superset.sock --limit-request-line 0 --limit-request-field_size 0 --statsd-host localhost:8125 superset:app