Lubuntuや他のLinuxディストリビューションでBashを使用していると、`ps -eo comm`コマンドでプロセスリストを表示する際に、コマンド名が15文字制限により切れてしまう問題が発生することがあります。これにより、長いコマンドや引数が正確に表示されず、診断や管理作業が難しくなります。この記事では、`ps`コマンドでフルコマンド名を表示するための方法を紹介します。
psコマンドでの文字制限の問題
`ps -eo comm`コマンドは、プロセスのコマンド名を表示しますが、デフォルトでは15文字の制限があり、長いコマンド名や引数が切れてしまうことがあります。この制限は、`ps`コマンドの出力が一部のシステムで短縮される原因となっています。しかし、この制限を回避する方法がいくつかあります。
多くの場合、`ps`コマンドで表示されるコマンド名が切れると、ユーザーは不完全な情報を得ることになります。例えば、`lxqt-policykit-`のように切れてしまうことがありますが、`kworker`のような短いコマンド名はそのまま表示されることが多いです。
コマンド名制限を解除する方法
`ps`コマンドでの15文字制限を解除するためには、`ps`のオプションを適切に設定することが必要です。残念ながら、`ps`コマンドにはコマンド名の長さ制限を直接変更するオプションは存在しませんが、`args`オプションを使用することで、コマンドとその引数をフルで表示することが可能です。
例えば、以下のように`ps`コマンドを変更することで、コマンドのフル表示が可能になります。
ps -eo args
これにより、コマンド名だけでなく、コマンドの引数も含めた完全な情報を表示できます。`args`オプションは、長いコマンドや引数を切らずに表示するために非常に便利です。
awkを使って重複を削除する方法
質問者が記載しているコマンド例では、`awk ‘!seen[$0]++’`を使って、重複したコマンドの行を取り除いています。この方法を利用すると、プロセスリストに同じコマンドが何度も表示されるのを防ぐことができます。
例えば、次のように`ps`コマンドを組み合わせることで、ユーザー固有のコマンドを表示し、重複を削除することができます。
ps -u $USER -o args | awk '!seen[$0]++' > ~/ps.log
このコマンドは、指定されたユーザーのプロセスを表示し、`args`オプションでコマンド名と引数をフル表示します。そして、`awk`で重複を排除し、最終的に`ps.log`に保存します。
コマンドの出力制限を回避するための追加設定
コマンドの出力が制限される原因として、ターミナルの幅設定が関与していることがあります。`ps`コマンドに`-ww`オプションを使用しても解決しない場合、ターミナルの幅が原因の可能性があります。この場合、`stty`コマンドや`COLUMNS`環境変数を設定することで、出力が制限されるのを回避できることがあります。
以下のように設定を変更してみましょう。
stty columns 2000
また、環境変数`COLUMNS`を設定してから`ps`コマンドを実行する方法もあります。
export COLUMNS=2000 && ps -eo args
これにより、コマンドの表示幅が広がり、長いコマンド名や引数が切れずに表示されるようになります。
まとめ
`ps -eo comm`コマンドでコマンド名が15文字制限で切れてしまう問題は、`args`オプションを使用することで解決できます。さらに、重複行を取り除くために`awk`を使用したり、ターミナルの幅設定を調整することで、コマンドの表示を改善できます。これらの方法を組み合わせることで、より正確なプロセスリストを取得し、管理作業を効率化できます。
コメント