如何检查过程及其在过程列表中的参数?

Ankit vashistha

我编写了一个脚本,在该脚本中,我需要使用同一脚本传递多个参数,该脚本将在一定时间后使用cron执行。为了确保没有多个脚本实例在运行,我进行了检查以检查脚本的进程是否正在使用ps -ef | grep -v grep | grep Connection_Manager.sh

当我使用执行检查时,我想检查脚本的运行过程中正在使用哪些参数ps -ef如何检查脚本运行过程中正在使用的参数?

你好

关于检查该进程是否已经在运行,我会稍微更改您正在做的事情,pgrep而改用它。

$ pgrep -f Connection_Manager.sh

例子

$ pgrep -f Connection_Manager.sh
16293

-f开关允许pgrep匹配整个命令行,而不仅仅是第一部分。

命令行参数

为此,您有两种方法。您也可以尝试从的输出中解析它们pgrep您需要添加其他开关-a

例子

$ pgrep -af Conn
17306 /bin/bash ./Connection_Manager.sh arg1 arg2

然后用awksed或类似的东西来分析它们的输出。

$ pgrep -af ./Conn | sed 's/.*Connection_Manager.sh //'
arg1 arg2

awk

$ pgrep -af ./Conn | tr '\000' ' '| awk '{print $4, $5}'
arg1 arg2

这两种方法简直就是我的头等大事,毫无疑问,它们已经得到了简化。

使用/ proc /

但是取决于参数的数量和长度,如果命令行的长度过长,这可能会导致您出现问题。因此,我可能会选择第二种方法来解析进程cmdline文件的内容每个进程在Linux/proc文件系统中都有一组文件,这些文件包含有关该进程的元信息。

$ ls /proc/19146 
attr        cmdline          environ  limits     mountinfo   numa_maps      personality  stack    task
autogroup   comm             exe      loginuid   mounts      oom_adj        root         stat     timers
auxv        coredump_filter  fd       map_files  mountstats  oom_score      sched        statm    wchan
cgroup      cpuset           fdinfo   maps       net         oom_score_adj  sessionid    status
clear_refs  cwd              io       mem        ns          pagemap        smaps        syscall

这些文件之一是file cmdline但是您必须特别注意该文件的内容。该文件中的参数由NUL字符分隔。您可以用来cat -v <file>在终端窗口中查看它们。

$ cat -v cmdline 
/bin/bash^@./Connection_Manager.sh^@arg1^@arg2^@

这代替^@了NUL。

因此,可以使用多种方式来解析内容,@ Joesph的答案中讨论了一种使用的方法xargs -0 ...另一个正在使用cat -v

例子

xargs

$ xargs -0 < cmdline 
/bin/bash ./Connection_Manager.sh arg1 arg2

$ cat -v cmdline 
/bin/bash^@./Connection_Manager.sh^@arg1^@arg2^@

您可以使用它sed来稍微清理一下第二种方法。

$ cat -v cmdline | sed 's/\^@/ /g'

参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在过程内部查询中使用过程参数变量

来自分类Dev

检查过程是否在VB.Net中完成

来自分类Dev

PostgreSQL:如何检查过程的哪些参数具有默认值?

来自分类Dev

在过程中传递不同的记录类型作为参数?

来自分类Dev

vb.net检查过程结束,并修改UI

来自分类Dev

如何在过程参数中定义值数组(或列)?

来自分类Dev

如何在过程中使用regexp作为参数通过Java执行sql过程?

来自分类Dev

如何在过程MYSQL中声明变量

来自分类Dev

甲骨文 如何基于输入参数在过程中操纵变量和动作

来自分类Dev

在过程MySql中创建临时表

来自分类Dev

传递参数以在过程中写入

来自分类Dev

终止后如何检查过程状态,甚至有可能吗?

来自分类Dev

如何使用backgroundWorker在过程中停止实施

来自分类Dev

bash +如何在过程中执行ssh测试

来自分类Dev

批量检查过程是否在应答

来自分类Dev

检查过程是否完成(python)

来自分类Dev

Nim-Lang:如何在过程中接受任意数量的参数

来自分类Dev

我们如何在过程中从IN参数获取VARRAY的值

来自分类Dev

MySQL-如何在过程中编写查询?(SET数据类型参数)

来自分类Dev

vb.net检查过程结束,并修改UI

来自分类Dev

如何在过程MYSQL中声明变量

来自分类Dev

检查过程是否间接导致错误

来自分类Dev

运行前检查过程

来自分类Dev

PL / SQL-检查过程参数会减慢其执行速度

来自分类Dev

Python 在过程中返回 None

来自分类Dev

PL/SQL:如何在过程中接受输入

来自分类Dev

在过程之间传递参数

来自分类Dev

如何在过程中连接更新查询

来自分类Dev

如何在过程中调用函数?