Etc services file in linux

Systemd: Service File Examples

Most Linux distributions use systemd as a system and service manager.

The systemctl is the main command in systemd, used to control services.

In this tutorial i will show how to create a systemd service file that will allow you to control your service using the systemctl command, how to restart systemd without reboot to reload unit files and how to enable your new service.

I will also show and describe the most important systemd service file options with the live examples of the systemd service files.

Create Systemd Service File

Create a systemd service file /etc/systemd/system/foo-daemon.service (replace the foo-daemon with your service name):

$ sudo touch /etc/systemd/system/foo-daemon.service $ sudo chmod 664 /etc/systemd/system/foo-daemon.service

Open the foo-daemon.service file and add the minimal service configuration options that allow this service to be controlled via systemctl :

[Unit] Description=Foo [Service] ExecStart=/usr/sbin/foo-daemon [Install] WantedBy=multi-user.target

Path To Daemon : If you don’t know the full path to a daemon, try which foo-daemon .

Once the service file is changed, it needs to reload systemd configuration:

$ sudo systemctl daemon-reload

Now you should be able to start , stop , restart and check the service status

$ sudo systemctl start foo-daemon $ sudo systemctl stop foo-daemon $ sudo systemctl restart foo-daemon $ systemctl status foo-daemon

To configure a service to start automatically on boot, you need to enable it:

$ sudo systemctl enable foo-daemon

To check the service logs, run:

Systemd Service File Options

The common configuration items are configured in the generic [Unit] and [Install] sections.

The service specific configuration options are configured in the [Service] section.

Important [Unit] Section Options

Option Description
Description A short description of the unit.
Documentation A list of URIs referencing documentation.
Before , After The order in which units are started.
Requires If this unit gets activated, the units listed here will be activated as well. If one of the other units gets deactivated or fails, this unit will be deactivated.
Wants Configures weaker dependencies than Requires . If any of the listed units does not start successfully, it has no impact on the unit activation. This is the recommended way to establish custom unit dependencies.
Conflicts If a unit has a Conflicts setting on another unit, starting the former will stop the latter and vice versa.
Читайте также:  Linux active directory ввод

A complete list of [Unit] section options:

Important [Install] Section Options

Option Description
Alias A space-separated list of additional names for the unit. Most systemctl commands, excluding systemctl enable , can use aliases instead of the actual unit name.
RequiredBy , WantedBy The current service will be started when the listed services are started. See the description of Wants and Requires in the [Unit] section for details.
Also Specifies a list of units to be enabled or disabled along with this unit when a user runs systemctl enable or systemctl disable .

A complete list of [Install] section options:

Important [Service] Section Options

Option Description
Type Configures the process start-up type. One of:
simple (default) – starts the service immediately. It is expected that the main process of the service is defined in ExecStart .
forking – considers the service started up once the process forks and the parent has exited.
oneshot – similar to simple , but it is expected that the process has to exit before systemd starts follow-up units (useful for scripts that do a single job and then exit). You may want to set RemainAfterExit=yes as well so that systemd still considers the service as active after the process has exited.
dbus – similar to simple , but considers the service started up when the main process gains a D-Bus name.
notify – similar to simple , but considers the service started up only after it sends a special signal to systemd.
idle – similar to simple , but the actual execution of the service binary is delayed until all jobs are finished.
ExecStart Commands with arguments to execute when the service is started. Type=oneshot enables specifying multiple custom commands that are then executed sequentially. ExecStartPre and ExecStartPost specify custom commands to be executed before and after ExecStart .
ExecStop Commands to execute to stop the service started via ExecStart .
ExecReload Commands to execute to trigger a configuration reload in the service.
Restart With this option enabled, the service shall be restarted when the service process exits, is killed, or a timeout is reached with the exception of a normal stop by the systemctl stop command.
RemainAfterExit If set to True , the service is considered active even when all its processes exited. Useful with Type=oneshot . Default value is False .

A complete list of [Service] section options:

Читайте также:  Linux аудит файловой системы

Systemd Service File Examples

[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
[Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type=notify EnvironmentFile=/etc/sysconfig/httpd ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND ExecReload=/usr/sbin/httpd $OPTIONS -k graceful ExecStop=/bin/kill -WINCH $ KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target
[Unit] Description=Redis persistent key-value database After=network.target [Service] ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no ExecStop=/usr/bin/redis-shutdown User=redis Group=redis [Install] WantedBy=multi-user.target

For more examples, check the systemd.service and systemd.unit man pages.

Источник

Файлы services и protocols

Здесь service задает имя сервиса, port определяет номер порта, используемого этим сервисом, а protocol определяет, каким транспортным протоколом пользуется сервис. Имеется возможность различия протоколов udp или tcp . Сервис может работать с разными протоколами, а может быть два сервиса работают на одном порте, но с разными протоколами. Поле aliases позволяет задавать несколько имен (псевдонимов) для одного сервиса.

Обычно, Вы не должны менять файл сервисов в Вашей Linux-системе. Однако, я даю пример такого файла на всякий случай.

Пример 12-2. Образец файла /etc/services

# The services file: # # well-known services echo 7/tcp # Echo echo 7/udp # discard 9/tcp sink null # Discard discard 9/udp sink null # daytime 13/tcp # Daytime daytime 13/udp # chargen 19/tcp ttytst source # Character Generator chargen 19/udp ttytst source # ftp-data 20/tcp # File Transfer Protocol (Data) ftp 21/tcp # File Transfer Protocol (Control) telnet 23/tcp # Virtual Terminal Protocol smtp 25/tcp # Simple Mail Transfer Protocol nntp 119/tcp readnews # Network News Transfer Protocol # # UNIX services exec 512/tcp # BSD rexecd biff 512/udp comsat # mail notification login 513/tcp # remote login who 513/udp whod # remote who and uptime shell 514/tcp cmd # remote command, no passwd used syslog 514/udp # remote system logging printer 515/tcp spooler # remote print spooling route 520/udp router routed # routing information protocol

Заметьте, что, например, сервис echo работает на порте 7 для обоих (TCP и UDP) протоколов, порт 512 используется для двух различных сервисов, а именно, для системы спутниковой связи COMSAT daemon по UDP и для remote execution (rexec), использующего TCP.

Кроме файла services сетевым библиотекам нужен способ преобразования имен протоколов в номера портов при работе на уровне IP с другими системами. Это делается с помощью файла /etc/protocols . Каждая его строка хранит имя протокола и соответствующий номер порта. Пример файла:

Пример 12-3. Образец файла /etc/protocols

# # Internet (IP) protocols # ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group multicast protocol tcp 6 TCP # transmission control protocol udp 17 UDP # user datagram protocol raw 255 RAW # RAW IP interface

Источник

Читайте также:  Аналог telnet astra linux

Что такое/etc/services в Linux/Unix?

Операционные системы UNIX хранят то, что называется файлом служб, в/etc/services. Он хранит информацию о многочисленных службах, которые клиентские приложения могут использовать на компьютере. Внутри файла находятся имя службы, номер порта и протокол, который он использует, и любые применимые псевдонимы.

Номера портов сопоставляются с конкретными службами, так же как файл hosts на компьютерах Windows сопоставляет имя узла с IP-адресом. Однако файл служб операционной системы UNIX содержит не IP-адреса, а информацию о том, является ли служба TCP или UDP и какие общие имена могут использоваться.

Для редактирования файла/etc/services можно использовать простой текстовый редактор, например Vim или Kate.

Пример файла служб UNIX

В UNIX ключевая роль файла конфигурации/etc/services заключается в том, что программы могут выполнять вызовы сокетов getportbyname () в своем коде, чтобы понять, какой порт им следует использовать. Например, демон электронной почты POP3 должен выполнить getportbyname (POP3), чтобы получить число 110, на котором работает POP3.

Идея состоит в том, что если все демоны POP3 используют getportbyname (), то независимо от того, какой демон POP3 вы запускаете, вы всегда можете перенастроить его номер порта, отредактировав/etc/services.

Ненадежно использовать файл служб, чтобы выяснить, что означают номера портов. Если вы хотите узнать, какие порты используются программами, вам следует вместо этого использовать программу lsof, чтобы точно определить, какие порты связаны с какими процессами. Если запуск lsof не подходит, вам следует изучить порты в более общей справочной информации.

Все сервисные файлы имеют одинаковый синтаксис:

псевдонимы имени порта/протокола 

Однако, псевдоним и комментарий для каждой записи базы данных не являются необходимыми, как вы можете видеть в этом примере файла служб:

$ cat/etc/services 
#
# Авторские права 2008 Sun Microsystems, Inc. Все права защищены.
# Использование регулируется условиями лицензии.
#
#ident "@ (#) services 1.34 08/11/19 SMI"
#
# Сетевые службы, стиль Internet
#
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
сбросить 9/tcp мойка ноль
сбросить 9/udp мойка ноль
systat 11/tcp пользователи
дневное время 13/tcp
дневное время 13/udp
netstat 15/tcp
chargen 19/tcp источник ttytst
chargen 19/udp ttytst источник
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp # Secure Shell
telnet 23/tcp
smtp 25/tcp mail
время 37/tcp timserver
время 37/udp timserver
name 42/udp nameserver
whois 43/tcp никнейм # обычно в шри-ник
swat 901/tcp # Samba Web Adm.Tool
servicetag 6481/udp
servicetag 6481/tcp
snmpd 161/udp snmp # SMA snmp daemon
$

Источник

Оцените статью
Adblock
detector