bashスクリプト(最初の行#! /bin/bash
)があり、do-doruns
bashコマンドラインから呼び出します。./do-doruns arg1 arg2 ...
このスクリプトは順番に scripts を呼び出し、./dorun a1 a2 a3 ...
より多くのレベルのスクリプトがあり、コンパイルされたプログラムを呼び出します。
ps
とを使用すると、dorun
その下で呼び出されるすべての実行中の項目にはps
その名前とコマンドライン引数が表示されます。たとえば、次のようになります。
/bin/bash /home/moss/path-to-dorun/dorun a1 a2 a3
など。ただし、どのdo-doruns
線も表示されません。確かに実行中です(サブプロセスが完了するのを待っています)。なぜそうしたのか理解できます。議論消えることはありますが(別のテストでshift
bashを使用すると引数が消えないことがわかりましたがps
)、その$0
コマンド名は消えません。
これが私の作業に邪魔になるわけではありませんが、必ず知りたい奇妙なミステリーです。物事のバージョンは次のとおりです。
uname -a
示す:Linux moss-Ubuntu-SMCSim 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
bash --version
示す:GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
ps --version
表示される内容(おそらく奇妙なことに):ps from procps-ng UNKNOWN
この動作はこれに限定されず、より
ps
基本top
的に見えるように表示されます。最後に、これが重要な場合は、これらすべてがVirtualBox仮想マシンで実行されていることです。
vboxmanage --version
示す:7.0.4r154605
ベストアンサー1
ps -C
これはoptionsが使用するコマンド名を変更し、grepと一致する方法(使用するフラグによって異なります)を変更するため、スクリプトの最初の行がどのように見えるかによって異なります。
次のようなものを使用してください
#!/bin/bash
コマンド名をスクリプト名に変更するため、do-dorunと表示されます。
使用
#!/bin/env bash
これは、コマンド名がbashのままであることを意味します。
両方のコマンドラインは同じように見えます。例えば/bin/bash myscriptname.sh arg1 arg2 arg3