Bashスクリプトを改善する
問題なく問題なく実行されるように、Bashスクリプトを改善する必要があります。このスクリプトはそのds4drv中で使用しており、修正方法がわからない問題があります。 最初の問題は、コントローラーが検出されたときに常に実行または機能するとは限らないことです。そのためにudevルールを作成しましたが、検出されたときにこのスクリプトが常に実行されない理由が明確ではありません。 2番目の問題は、ds4drv通常のユーザーとして実行されるのではなく、rootとしてのみ実行できるようにすることです。 3番目の問題は、作成されたPIDロックファイルを処理する適切な方法がわからないため、PIDプロセスが存在しなくなったときに、PIDロックファイルが削除されるためです。実行中のインスタンスが1つだけになるように、bashスクリプトでPIDファイルを使用する方法に関する適切なドキュメントを見つけるのは困難です。 ここにds4drvのudevルールがあります: 50-ds4drv.rules KERNEL=="uinput", GROUP="users", MODE="0666" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", GROUP="users", MODE="0 666" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", KERNELS=="0005:054C:05C4.*", GROUP="users" MODE="0666" ACTION=="add", SUBSYSTEM="usb", ATTRS{idProduct}=="054c", RUN+="/home/user/scripts/ds4check.sh", GROUP="users" , MODE="0666" それはudevルールがそうあるべきであると私はかなり確信しています、それはGROUPユーザーのための読み書きなので、パーミッションは私にとって正しいようです。bashスクリプトが実行され、コントローラーデバイスが接続されたときにこのルールが自動的に実行されるように設定されると、コントローラーデバイスが接続されていない場合など、一部のゲームが応答しなくなるという問題のいくつかのインスタンスがあるようです作用することが/dev/js0なく、その代わりに作用する/dev/js1代わりに。特にrootとして実行されていない場合、このエラーを返すことがよくあります。 OSError: [Errno 13] Permission denied: '/dev/input/event17' そしてもちろんbashスクリプト。 ds4check.sh #!/bin/bash # DS4 Check Script pidfile=/tmp/ds4drv.pid # check if process is already running …