SASコードをbashで実行します。
したがって、ps -u <user-id>
..(1)を実行すると、次のようになります。
UID PID TTY TIME CMD
327208 921620 - 0:00 sftp-server
327208 1409136 - 0:00 sshd
327208 1503426 pts/24 0:00 ps
327208 1683576 pts/24 0:00 elssrv
327208 2334914 pts/24 0:00 ksh
327208 2609352 pts/24 0:00 sas
327208 2838702 pts/24 0:04 sas
327208 3490018 pts/24 0:00 elssrv
327208 4436128 - 0:00 sftp-server
327208 4722852 pts/24 369:02 sas
327208 4964572 pts/24 0:00 elssrv
327208 5959866 - 0:01 sshd
327208 5976318 - 0:01 sshd
さて、ps -u <user-id>|grep sas
..(2)
私はsasプロセスを取得します:
327208 2609352 pts/24 0:00 sas
327208 2838702 pts/24 0:05 sas
327208 4722852 pts/24 369:51 sas
一方、ls -l /proc/4722852/cwd
を実行すると、..(3)PID4722852でプロセスを実行した場所が取得されます。
(2)と(3)のコマンドを接続する方法はありますか?
出力は、ps -u <user-id>|grep sas
?を実行して取得したすべてのSASコードの場所です。
はい、そうするための非常に簡単な方法があります。出たい情報の量に応じて、実際には必要なものを取得する方法はたくさんあります。私が考えることができる最初の方法:
ps -u <userid> | grep sas | awk '{print $2}' | xargs ls -l
最初の2つのコマンドは、2番目のコマンドとまったく同じように機能します。 awk
コマンドは、各行の2番目の項目(デフォルトでは空白で区切られた項目)のみを出力します。xargs
コマンドは、「STDINに表示される内容をパラメーターとして次のコマンドに渡す」と言います。