[Unit] Description=Elasticsearch Documentation=https://www.elastic.co Wants=network-online.target After=network-online.target [Service] Type=simple # the elasticsearch process currently sends the notifications back to systemd # and for some reason exec does not work (even though it is a child). We should change # this notify access back to main (the default), see https://github.com/elastic/elasticsearch/issues/86475 NotifyAccess=all RuntimeDirectory=elasticsearch PrivateTmp=true Environment=ES_HOME={{ elastic_home }} Environment=ES_PATH_CONF={{ elastic_conf }} Environment=PID_DIR={{ elastic_home }} Environment=ES_SD_NOTIFY=true EnvironmentFile=-@path.env@ WorkingDirectory={{ elastic_home }} User={{ elastic_usr }} Group={{ elastic_grp }} ExecStart={{ elastic_link }}/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet # StandardOutput is configured to redirect to journalctl since # some error messages may be logged in standard output before # elasticsearch logging system is initialized. Elasticsearch # stores its logs in /var/log/elasticsearch and does not use # journalctl by default. If you also want to enable journalctl # logging, you can simply remove the "quiet" option from ExecStart. StandardOutput=journal StandardError=inherit # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65535 # Specifies the maximum number of processes LimitNPROC=4096 # Specifies the maximum size of virtual memory LimitAS=infinity # Specifies the maximum file size LimitFSIZE=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=0 # SIGTERM signal is used to stop the Java process KillSignal=SIGTERM # Send the signal only to the JVM rather than its control group KillMode=process # Java process is never killed SendSIGKILL=no # When a JVM receives a SIGTERM signal it exits with code 143 SuccessExitStatus=143 # Allow a slow startup before the systemd notifier module kicks in to extend the timeout TimeoutStartSec=900 [Install] WantedBy=multi-user.target