如何找到正在运行的脚本的传递参数值?

时间:2019-09-04 04:32:42

标签: bash shell aix

我有一个AIX生产服务器,上面运行着一个脚本A.sh。 我没有此服务器的root访问权限。 我想找出此A.sh脚本的参数传递值。 我如何获得该值?

/proc/processID内有任何规定吗?

以下内容无效。我尝试生成一个脚本:

echo "Hello $1 $2 $3"

while [ 1 ]
do
   sleep 2
   echo $$
done

然后我通过

运行此脚本
test.sh 1  2 3

输出:

$ cat /proc/3107/cmdline
-bash$

根据我期望的@Cyrus建议的建议

1 2 3 

这些是我传入的参数,但它不能那样工作。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

cat /proc/PROCESSID/cmdline

答案 1 :(得分:1)

这应该有效:

cat /proc/3107/cmdline | tr '\0' ' ';

或者,您可以使用:

ps -ef | grep script.sh | grep -v grep

其中script.sh是您现在正在运行的脚本的名称。

验证步骤:

  1. 创建一个名为script.sh的脚本,并将以下代码粘贴到其中:

    #!/bin/bash
    while :
    do
      echo "Press [CTRL+C] to stop.."
      sleep 1
    done
    
  2. 保存文件(vi编辑器中的:wq!)。

  3. 通过

    使其可执行
    chmod a+x script.sh
    
  4. 通过发出如下命令行选项来运行脚本:

    ./script.sh var1 val1 var2 val2 var2 val4
    
  5. 打开另一个终端(重复的会话)并发出:

    ps -ef | grep script.sh | grep -v grep 
    

您应该能够看到以下内容:

username 12227  2268  0 07:48 pts/98   00:00:00 /bin/bash ./script.sh var1 val1 var2 val2 var2 val4 var4