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
root以外のユーザーとして次のものを使用できます。
$ 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
クリーンなソリューション)。