Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用unix编写脚本以让用户运行进程_Linux_Bash_Unix - Fatal编程技术网

Linux 使用unix编写脚本以让用户运行进程

Linux 使用unix编写脚本以让用户运行进程,linux,bash,unix,Linux,Bash,Unix,如果我发现现在有两个用户(UserA和UserB)登录到系统中,那么如何找到这两个用户运行的进程。但是,这里的诀窍是脚本要在无人参与的批处理中运行,而不需要任何键盘输入。除了被调用 我知道剧本的第一部分是 谁| awk{打印$1}' 这项研究的结果将是 乌瑟拉 用户B 我想知道的是,我如何使用此输出,并使用一些ps命令自动推送它,以获得所需的结果。不确定我是否正确理解了您的问题,但您可以通过grep将ps的输出传输到特定用户处,以获得运行的进程,如下所示: ps -ef | grep '^xxx

如果我发现现在有两个用户(UserA和UserB)登录到系统中,那么如何找到这两个用户运行的进程。但是,这里的诀窍是脚本要在无人参与的批处理中运行,而不需要任何键盘输入。除了被调用

我知道剧本的第一部分是 谁| awk{打印$1}' 这项研究的结果将是 乌瑟拉 用户B


我想知道的是,我如何使用此输出,并使用一些ps命令自动推送它,以获得所需的结果。

不确定我是否正确理解了您的问题,但您可以通过grep将ps的输出传输到特定用户处,以获得运行的进程,如下所示:

ps -ef | grep '^xxxxx '

其中xxxxx是用户。

不确定我是否正确理解了您的问题,但您可以通过grep管道将ps的输出传输到特定用户,以使流程运行,如下所示:

ps -ef | grep '^xxxxx '
其中xxxxx是用户。

获取用户列表(使用who),保存到文件,然后列出所有进程,并grep(使用刚刚创建的文件)

获取用户列表(使用who),保存到一个文件,然后列出所有进程,并对其进行grep(使用刚刚创建的文件)

将仅将输出限制为那些实际用户ID与作为其参数的任何给定ID相对应的进程。(例如,ps-f-U“UserA UserB”。)


将仅将输出限制为那些实际用户ID与作为其参数的任何给定ID相对应的进程。(例如,ps-f-U“UserA UserB”)

在其他答案的帮助下,我终于找到了我要搜索的一行代码(更新了以了解没有用户登录的情况-请参阅评论)

backticks中的内容被执行并“插入到现场”。其工作原理如下:

who             : you know what that does
cut -d' '       : split strings into fields, using ' ' as separator
-f1             : and return only field 1
uniq            : return only unique entries
xargs echo      : take each of the values piped in, and send them through echo: this strips the \n
2> /dev/null    : if there are any error messages (sent to 2: stderr)
                : redirect those to /dev/null - i.e. "dump them, never to be seen again"
所有这一切的输出

user1 user2 user3
…不管有多少。然后用
-fU
标志调用
ps
,为这些用户请求具有完整格式的所有进程(当然,您可以更改这些标志以获得所需的格式,只需在“`”中的内容之前将
-U
保留在那里


在其他答案的帮助下,我终于找到了我要搜索的一行代码(在没有用户登录的情况下更新了,请参见注释)

backticks中的内容被执行并“插入到现场”。其工作原理如下:

who             : you know what that does
cut -d' '       : split strings into fields, using ' ' as separator
-f1             : and return only field 1
uniq            : return only unique entries
xargs echo      : take each of the values piped in, and send them through echo: this strips the \n
2> /dev/null    : if there are any error messages (sent to 2: stderr)
                : redirect those to /dev/null - i.e. "dump them, never to be seen again"
所有这一切的输出

user1 user2 user3
…不管有多少。然后你用
-fU
标志调用
ps
,为这些用户请求具有完整格式的所有进程(当然,你可以更改这些标志以获得你想要的格式,只需在“`”中的内容之前将
-U
保留在那里


您是否尝试使用
ps
命令执行此操作失败?否,我不确定如何将退出who命令置于ps命令以使当前登录的用户运行进程。您是否尝试使用
ps
命令执行此操作失败?否,我不确定如何将退出who命令置于ps命令ps命令以获取当前登录用户运行的进程。如何在不输入当前登录用户的用户ID的情况下自动执行此操作。因此,退出who命令应自动转到ps命令并给出所需结果。如何执行此操作?如何在没有我的情况下自动执行此操作输入当前登录用户的用户ID。因此,退出who命令应自动转到ps命令并给出所需结果。我如何才能做到这一点?我想到了这个解决方案,但在没有临时文件的情况下,我一直在努力实现这一点……很明显,“让它工作吧”这是正确的方法。但是出于好奇-你能在没有临时文件的情况下(可能使用
xargs
)让它工作吗?@Floris,是的-你也可以在没有grep的情况下让它工作。请看我的答案。我想到了这个解决方案,但我一直在努力在没有临时文件的情况下实现它…显然是“让它工作吧”这是正确的方法。但是出于好奇-你能在没有临时文件的情况下(可能使用
xargs
)让它工作吗?@Floris,是的-你也可以在没有grep的情况下让它工作。看我的答案。你的答案启发了我,让我想到了一句话——“只是因为我不得不这么做”。谢谢。你的回答启发了我,让我想到了一句话-“只是因为我不得不这么做”。谢谢。+1好吧,我确实喜欢这种风格。这本来是我的方法,但我不喜欢ps(1)在没有人登录时出错。@pilcrow谢谢。问题是从“两个用户登录”开始的“所以我真的没有考虑过如果
who
什么也不返回会发生什么。保存的好处是错误消息会转到
stderr
-这样你可以在结尾添加
2>/dev/null
,错误消息被抑制…+1好吧,我喜欢这种风格。这本来是我的方法,但我不喜欢ps(1)的方式。”没有人登录时出错。@pilcrow谢谢。问题的开头是“两个用户登录”所以我没有认真考虑如果
who
什么也不返回会发生什么。保存的好处是错误消息会转到
stderr
——这样您就可以在末尾添加
2>/dev/null
,错误消息被抑制。。。
ps -fU user1 user2 user3