====== Управление сервисами в Linux ======
===== Конфигурация сервиса =====
# cat /etc/ssh/sshd_config
# cat /etc/rsyslog.conf
# ls /etc/rsyslog.d/
# cat /etc/apache2/apache2.conf
# ls /etc/apache2/sites-available/
# ls -l /etc/apache2/sites-enabled/
===== Запуск/остановка сервиса =====
==== Из shell ====
# /usr/sbin/sshd
* [[Сигналы]]
===== Определение системы загрузки =====
$ ps -p 1
===== Система загрузки rc.local =====
# cat /etc/rc.local
#!/bin/sh
/usr/bin/ssh -N -R 61000+X:localhost:22 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes userX@gate.isp.un &
exit 0
chmod +x /etc/rc.local
===== Система загрузки SysV =====
* [[http://ru.wikipedia.org/wiki/Init]]
* [[Средства программирования shell#Примеры использования скриптов sh в системах загрузки]]
==== Скрипты запуска/остановки ====
# cat /etc/default/proftpd
# cat /etc/init.d/proftpd
# /etc/init.d/proftpd start
# /etc/init.d/proftpd stop
# cat /etc/init.d/sshvpn
#!/bin/sh
######### CentOS ##########
# sshvpn Start/Stop the sshvpn daemon.
#
# chkconfig: 2345 90 60
######### Debian ##########
### BEGIN INIT INFO
# Provides: sshvpn
# Required-Start: $remote_fs $syslog $local_fs $network
# Required-Stop: $remote_fs $syslog $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: sshvpn Secure Shell server
### END INIT INFO
if [ "$1" = start ]
then
echo Starting sshvpn...
/usr/bin/ssh -N -R 61000+X:localhost:22 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes userX@gate.isp.un &
echo $! > /var/run/sshvpn.pid
elif [ "$1" = stop ]
then
echo Stopping sshvpn...
kill -TERM `cat /var/run/sshvpn.pid`
rm /var/run/sshvpn.pid
else
echo Usage:
echo '/etc/init.d/sshvpn start|stop'
fi
==== Управление запуском/остановкой ====
# runlevel
# cd /etc/init.d
# ln -s ../init.d/sshvpn /etc/rc5.d/S20sshvpn
# ln -s ../init.d/sshvpn /etc/rc0.d/K20sshvpn
# ln -s ../init.d/sshvpn /etc/rc6.d/K20sshvpn
=== Debian/Ubuntu ===
* [[http://help.ubuntu.ru/wiki/создание_скрипта_автозапуска|Создание своего скрипта автозапуска при загрузке компьютера]]
# ls -l /etc/rc?.d/* | grep ftp
# update-rc.d -f proftpd remove
# update-rc.d proftpd defaults
=== RHEL/CentOS ===
[[http://www.cyberciti.biz/faq/rhel5-update-rcd-command/]]
# chkconfig --list
# chkconfig --add sshvpn
# chkconfig --list sshvpn
# chkconfig --del sshvpn
==== Управление ресурсами ====
# cat /etc/init.d/asterisk
...
MAXFILES=65536
...
===== Система загрузки Systemd =====
* [[http://val.bmstu.ru/unix/Books/s4a_latest.pdf|systemd для администраторов]]
* [[https://wiki.ubuntu.com/SystemdForUpstartUsers|Systemd For Upstart Users]]
* [[https://habrahabr.ru/company/centosadmin/blog/255845/|Systemd за пять минут]]
* [[https://wiki.archlinux.org/index.php/systemd|systemd]]
==== Управление юнитами Systemd =====
* [[https://docs.gitea.io/en-us/linux-service/|Run Gitea as Linux service]]
* Сервис SNORT [[Сервис SNORT#Копирование alert_unified2 в syslog]]
$ systemctl -a
$ systemctl list-units
centos# find /usr/lib/systemd/system/
debian# find /lib/systemd/system/
# find /etc/default/
$ systemctl status ssh
# systemctl stop ssh
# systemctl start ssh
# systemctl reload ssh
# systemctl disable ssh
# systemctl enable ssh
# cat /etc/systemd/system/sshvpn.service
[Unit]
Description=ssh client vpn daemon
After=network.target
[Service]
ExecStart=/usr/bin/ssh -N -R 61000+X:localhost:22 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes userX@gate.isp.un
#ExecStart=/usr/bin/java -jar /home/jenkins/agent.jar -url http://server.corp13.un:8081/ -secret NNNNNNNNNNNNNNNNNNNN -name gate -workDir "/home/jenkins/"
#User=jenkins
KillMode=process
Restart=always
RestartSec=42s
[Install]
WantedBy=multi-user.target
# systemctl status sshvpn
# systemctl enable sshvpn
# systemctl start sshvpn
==== Настройка параметров запуска в Systemd =====
# systemctl edit имясервиса
[Service]
LimitNOFILE=65536 # nginx
TimeoutStartSec=180 # elasticsearch
# systemctl daemon-reload # не очевидно, что нужно
# systemctl show имясервиса
# systemctl restart имясервиса
# systemctl status имясервиса
# cat /proc/NNNNN/limits
===== Система загрузки OpenRC =====
# ls /etc/init.d/
# /etc/init.d/sshd status|start|stop
# rc-service sshd status|start|stop
# rc-update add|del sshd default
# rc-update show
# openrc
===== Система загрузки Upstart =====
* [[https://ru.wikipedia.org/wiki/Upstart|Upstart в Википедии]]
=== Скрипты запуска/остановки ===
# initctl show-config | grep ssh
# initctl show-config ssh
# less /etc/default/ssh
# less /etc/init/ssh.conf
# start ssh
# stop ssh
# initctl list
=== Пример файла конфигурации для запуска/остановки сервиса ===
server# cat /etc/init/sshvpn.conf
description "OpenSSH tunnel"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
umask 022
exec /usr/bin/ssh ssh -N -R 192.168.X.10:3389:192.168.100+X.101:3389 student@server.corpX.un
mail# cat /etc/init/communigate.conf
description "Communigate"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
umask 022
exec /root/CGateProSoftware/CommuniGate/CGServer-static --Base /var/CommuniGate
=== Управление запуском/остановкой ===
server# echo manual > /etc/init/sshvpn.override
===== Универсальный скрипт service =====
debian# service --status-all
# service ssh start
# service ssh stop