デバイスが接続されているそれぞれに複数のシリアルポートがあります。それらは/dev/ttyUSB*
としてリストされます。ここで、Kermit
スクリプトを実行する前に、pythonスクリプトを使用して、他のプロセスがこれらを使用していないことを確認する必要があります(アクセスが拒否されないようにするため)login_init
。ps
およびlsof
コマンドを試しました。lsof
は次の出力を提供しました。
sof: WARNING: can't stat() Fuse.gvfsd-Fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
login_ini 13395 user4 4u CHR 188,9 0t0 512 /dev/ttyUSB9
python 14410 user4 6u CHR 188,9 0t0 512 /dev/ttyUSB9
プロセスのpid
sは問題なく取得できましたが、killall
コマンドを実行すると、次のようにプロセスが見つからないと表示されます。
user4@user-pc-4:~/Scripts$ killall -9 13395
13395: no process found
user4@user-pc-4:~/Scripts$ killall -9 14410
13395: no process found
これは正しい唯一の方法ですか、それとももっと良い方法がありますか?
killall
は、プログラム名の部分文字列を引数として期待します。プロセスIDでプロセスを強制終了するには、kill
を使用します。
コマンドfuser
を使用すると、ファイルを開いているすべてのプロセスを直接強制終了できます。
fuser -k /dev/ttyUSB9
すでにプロセスIDを持っているので、kill
を使用できます。
kill -TERM 13395 14410
(SIGTERM
-ボタンを押す前に、まず通常のSIGKILL
を送信することをお勧めします。)
killall
コマンドはLinuxシステムで使用されます プロセスはnameで強制終了します pkill
。ただし、Solarisなどの他のシステムでは、 killall
killseverything (シャットダウン手順の一部として)、これを使用する場合は覚えておくとよいでしょう。
以下のコマンドを使用してpidをkillします
Sudo kill -9 13395
Sudo kill -9 14410
単一のコマンドですべて(/ dev/ttyUSB9)を殺したい場合は、以下のコマンドを使用してください
Sudo pkill -9 ttyUSB9
実行中のプロセスIDを一覧表示するには、以下のコマンドを使用します
ps -ef | grep ttyUSB9
実行中のプロセスidの数を表示するには、以下のコマンドを使用します
ps -ef | grep ttyUSB9 | wc -l