Ubuntu에서 다음 쉘 실행 파일이 실행되고 있는지 확인할 수 있습니까? 실행 파일 이름은 입니다 ibgateway
. 을 실행하면 htop
다음과 같은 명령이 표시되어 현재 실행 중이라는 뜻입니다.
/bin/sh -c nohup "/home/user1/Jts/ibgateway/978/ibgateway" "-J-DCHANNEL=latest" "-J-DchannelChanged=false" "-J-DjtsConfigDir=/home/user1/Jts" "-J-Drestart=jdapbbikegkmhgpnhhk
나는 이것을 시도했지만 실행에도 불구하고 pgrep ibgateway
아무것도 반환하지 않습니다. ibgateway
위 프로세스가 터미널에서 실행되고 있는지 확인하는 방법을 찾고 있습니다.
고쳐 쓰다
user1@SFO:~$ cat /proc/11965/comm
sh
user1@SFO:~$ cat /proc/11965/cmdline
/bin/sh-cnohup "/home/user1/Jts/ibgateway/978/ibgateway" "-J-DCHANNEL=latest" "-J-DchannelChanged=false" "-J-DjtsConfigDir=/home/user1/Jts" "-J-Drestart=jdapbbikegkmhgpnhhkpeglncdomifcjhpdimcbe" > /dev/null 2>&1
답변1
귀하의 명령은 다음과 같아야 합니다:
/bin/sh -c 'nohup "/home/user1/Jts/ibgateway/978/ibgateway" '\
'"-J-DCHANNEL=latest" "-J-DchannelChanged=false" '\
'"-J-DjtsConfigDir=/home/user1/Jts" '\
"-J-Drestart=jdapbbikegkmhgpnhhk"'
이들 모두는 "
보호할 특수 문자가 없기 때문에 불필요합니다. 마지막에 한 명도 빠졌네요.
가능한 해결책
시스템 D
이 문제를 해결하는 가장 좋은 방법은 아마도 SystemD를 사용하는 것입니다. 유닛 파일을 생성하고, 를 사용하여 서비스를 시작 systemctl start ibgateway.service
하고, 를 사용하여 상태를 쿼리합니다 systemctl status ibgateway.service
. 아니요 sh
, 'nohup'은 필요하지 않습니다.
유닛 파일을 생성할 필요도 없으며 systemd-run
루트가 아닌 사용자로서 다음을 사용하면 됩니다.
$ systemd-run --user ./testscript.sh
Running as unit: run-r1422e75c673a4439aaacefd0df118a51.service
$ systemctl --user status run-r1422e75c673a4439aaacefd0df118a51.service
● run-r1422e75c673a4439aaacefd0df118a51.service - /home/hl/tmp/./testscript.sh
Loaded: loaded (/run/user/1000/systemd/transient/run-r1422e75c673a4439aaacefd0df118a51.service; transient)
Transient: yes
Active: active (running) since Sat 2020-08-08 02:36:57 CEST; 26s ago
Main PID: 7740 (testscript.sh)
CGroup: /user.slice/user-1000.slice/[email protected]/run-r1422e75c673a4439aaacefd0df118a51.service
├─7740 /bin/bash /home/hl/tmp/./testscript.sh
└─7742 sleep 100
운행상태 확인
가장 좋은 방법은 다음과 같습니다.
$ systemctl show dracut-shutdown.service | grep -e ActiveState -e SubState
ActiveState=active
SubState=exited
$ systemctl show display-manager.service | grep -e ActiveState -e SubState
ActiveState=active
SubState=running
그래서 당신은 할 수 있습니다 grep
( SubState=running
그리고 ActiveState=active
깨끗한 솔루션).