Linux 按进程数和最活跃用户数排列的顶级用户
问题-编写一个shell脚本,每10秒提供一个排序列表(在一个文件中),其中包含活跃登录的用户以及他们拥有的进程数。每分钟,同一脚本都会按字母顺序在屏幕上打印前10名用户及其组的列表,这些用户a)在过去20秒内拥有最多进程,b)从脚本开始就拥有最活跃的进程。秒数(见10)和用户数(见20)应在命令行中作为参数提供 这就是我现在所拥有的,我不知道是否所有的东西都能工作,但我正在努力使所有东西都能用循环工作。你可以从研究Linux 按进程数和最活跃用户数排列的顶级用户,linux,shell,Linux,Shell,问题-编写一个shell脚本,每10秒提供一个排序列表(在一个文件中),其中包含活跃登录的用户以及他们拥有的进程数。每分钟,同一脚本都会按字母顺序在屏幕上打印前10名用户及其组的列表,这些用户a)在过去20秒内拥有最多进程,b)从脚本开始就拥有最活跃的进程。秒数(见10)和用户数(见20)应在命令行中作为参数提供 这就是我现在所拥有的,我不知道是否所有的东西都能工作,但我正在努力使所有东西都能用循环工作。你可以从研究谁,睡眠,while和排序开始。然后,一旦你尝试了某样东西,你就会带着一个问题回
谁
,睡眠
,while
和排序开始。然后,一旦你尝试了某样东西,你就会带着一个问题回来,不管它有多严重。这并不意味着批评,只是帮助将来发布更多可接受的问题
值得一提的是,您的代码可能是以下内容的变体:
if [ -d $1 ] && [ $#2 -gt 0 ]; then
find $1 ps aux | awk '{ print $1 }' | sed '1 d' | sort | uniq | while read line true; do #do forever
who $line | sort $2 #show loggerd-in users, sorted alphabetically
sleep 10 #wait 10 seconds
done #carry on
else
echo "The parameter is invalid"
exit 1
fi
显然,您需要根据更具体的需求对其进行调整,但是,因为您只要求一个开始,所以它就在这里
您的一些更复杂的需求可能需要who
以外的工具,并且可能还需要awk
进行文本处理。你必须研究这一点,因为它毕竟是你的作业。从某个地方开始,一旦开始,这很容易。而且,你的代码在哪里?我们不解决测试问题,我们帮助你找到解决方案只是出于好奇,背景是什么?是谁给你这个任务的?“从头开始,”国王非常严肃地说,“一直走到最后,然后停下来。”-刘易斯·卡罗尔,《爱丽丝漫游奇境记》:-)你一定是前世的外交官和诗人。。。
#!/usr/bin/env bash
while true ; do # do forever
who | sort # show logged-in users, sorted
sleep 10 # wait a bit
done # carry on