¿Cómo establecería un ulimit en una unidad de servicio systemd?
Esta pregunta de stackoverflow explica que systemd ignora los límites del sistema
¿Cómo sería la sintaxis para establecer los siguientes límites?
ulimit -c
ulimit -v
ulimit -m
[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
SOLR_INSTALL_DIR=/opt/solr
SOLR_ENV=/etc/default/solr.in.sh
RUNAS=solr
SOLR_PID_DIR="/var/solr"
SOLR_HOME="/opt/solr/server/solr"
LOG4J_PROPS="/var/solr/log4j.properties"
SOLR_LOGS_DIR="/opt/solr/server/logs"
SOLR_PORT="8389"
PIDFile=/var/solr/solr-8389.pid
ExecStart=/opt/solr/bin/solr start
ExecStatus=/opt/solr/bin/solr status
ExecStop=/opt/solr/bin/solr stop
Restart=on-failure
User=solr
SuccessExitStatus=143 0
[Install]
WantedBy=multi-user.target

man 5 systemd.exec.Respuestas:
Las asignaciones de límites systemd a ulimit
Si un ulimit se establece en 'ilimitado' configúrelo en 'infinito' en la configuración del sistema
ulimit -c unlimitedes lo mismo queLimitCORE=infinityulimit -v unlimitedes lo mismo queLimitAS=infinityulimit -m unlimitedes lo mismo queLimitRSS=infinityEntonces una configuración final se vería así
En este caso en particular, no conozco la ruta completa de Java (ya que cambia según el tipo de servidor), y systemd no está contento con las rutas relativas, envuelvo el comando Java en un simple script bash ubicado en
/opt/solr/bin/solr-foofuente
RUNASySOLR_ENVsea corregida o quitada. Y luego está todo el alboroto en elbin/solrscript de shell que es completamente innecesario bajo un administrador de servicios.bin/solrscript hinchado .execen el script de shell.