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