systemd
작업 에이 정의를 사용하고 있습니다 .
[Unit]
Description=Some job
[Service]
ExecStart=/usr/local/sbin/somejob
User=dlt
Type=forking
[Install]
WantedBy=multi-user.target
스크립트는 다음과 같습니다 (tcpip 소켓에서 수신하고 파일에 입력을 추가하는 간단한 루틴 호출).
#!/bin/sh
cd /home/user/tmp/testout
nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
이후 systemctl start somejob
에, 실행 등의 과정을 보여줍니다 init
부모와 같은 :
user@CANTANDO ~$ ps -u dlt eo pid,ppid,command
PID PPID COMMAND
8718 1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar
systemctl stop somejob
프로세스를 수행 한 후에 는 더 이상 표시되지 않으며 포트가 닫힙니다.
그래서 모든 것이 멋지고 멋지게 보입니다.
내 질문은 : 이것은 Java 데몬을 실행하는 데 적합한 솔루션 입니까 systemd
, 아니면주의 사항이 있습니까? 따라서 이것을 달성하는 더 안정적이고 안전한 방법이 있습니까?