ps aux|grep someprocess
)?类似的东西:
run -n 10 'ps aux|grep someprocess'
我想交互使用它,请不要张贴脚本。在每台机器上获得相同的功能。
#1 楼
我不认为有内置的命令或shell,因为它只是Bourne shellfor
循环所设计的琐碎子集,因此自己实现这样的命令非常简单。用于生成序列的Bash内置函数:for i in {1..10}; do command; done
对于非常老版本的bash,可以使用
seq
命令:是由command
或;
分隔的管道或一系列命令。您可以使用&&
变量来知道您正在进行的迭代。像在您的.bashrc上这样(未试用):for i in `seq 10`; do command; done
用法:
#function run
run() {
number=
shift
for i in `seq $number`; do
$@
done
}
示例:
run 10 command
评论
@mahatmanich,循环不是脚本。没有什么可以阻止您在交互式终端上使用...。
– Zoredache
2011年5月24日18:10
好吧,上面的单行是执行此操作的一种标准方法,并且非常简单。为什么对您不利?也许您问错了问题?您的脚本或要多次重复执行的操作的主要目标是什么?如果我们以不同的方式提出问题,也许会有更好的解决方案。
– Patkos Csaba
2011年5月25日晚上8:43
@mahatmanich-是用于迭代的内置bash。
– JimB
2011年5月25日12:58
@Eduardo Ivanec-仅供参考,bash具有类似seq的内置范围:{1..10}
– JimB
11年5月25日在13:03
似乎内置的括号序列不支持变量替换(请参阅stackoverflow.com/a/3737773/713554)。如果将{1 .. $ number}交换为`seq $ number`,则放置在.bashrc中时,您提供的功能将完美工作。
–狮子座
2012年3月29日13:36
#2 楼
ps aux | grep someprocess
看起来您想在固定时间内观看程序的更改。 Eduardo给出了一个答案,可以准确地回答您的问题,但是还有一个替代方法:将命令解释为“ run watch ps aux”,并将结果通过watch
传递。另一种执行上一个命令的方法是:默认情况下,grep someprocess
每两秒钟刷新一次,可以使用watch
选项进行更改。例如,如果要间隔1秒:watch 'ps aux | grep someprocess'
#3 楼
只是为了好玩pgrep ssh ;!!;!!;!!;!!;!!;!!
评论
有人可以解释一下吗?看起来很有趣。
–丹尼尔·瓦塔诺夫(Daniel Vartanov)
14年2月24日在16:31
;只是命令分隔符。 !!重播bash中的最后一个命令。因此,运行“ pgrep ssh”,然后重播6次。
– Piotr Kukielka
2014-09-21 19:11
虽然这很有启发性,但不是很直观。一线似乎是最好的方法。无论如何,谢谢你的回答。
– m3nda
15年3月21日在6:27
不会cmd; !!只需在一行上重复在当前行之前输入的命令?它必须是两个单独的历史记录条目。
–乔尔·普拉(Joel Purra)
2015年4月28日在7:16
更换;使用&&可以在第一次失败时停止。
–user881300
19-10-6在8:41
#4 楼
与以前的答复类似,但不需要for循环:评论
这只会执行一次执行echo“ hello” 1 2 3 4 5 6 7 8 910。您需要为每个输入(数字)的一个进程运行带有-n 1的xargs,为并行执行(10并行运行)使用-P 10流程)。以seq 10结尾| xargs -n 1 -P 10回显。
–亚历山大·克里姆采切克(Alexander Klimetschek)
17-4-26在22:08
#5 楼
尝试以下操作:yes ls | head -n5 | bash
这要求命令在子shell中执行,这会稍微降低性能。 YMMV。基本上,您可以通过“ yes”命令将字符串“ ls”重复N次;而“ head -n5”在5次重复中终止了循环。最后一个管道将命令发送到您选择的外壳。
顺便说一句,类似
csh
的外壳具有内置的repeat
命令。您可以使用它在bash子shell中执行命令!#6 楼
POSIX方式http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04_01
x=10
while [ $x -gt 0 ]; do
command
x=$(($x-1))
done
当然可以做成一个衬里:
x=10; while [ $x -gt 0 ]; do command; x=$(($x-1)); done
,它似乎是最可移植的方式,因此不太可能使您安装程序。
以下内容的移植性较差:
括号扩展
{1..10}
:特定于bash,如果参数较大,则将产生很大一行seq
:GNU yes
:GNU 如果您厌倦了可移植性,请考虑使用GNU
parallel
:sudo apt-get install parallel
seq 100 | parallel echo {}
并行命令,并且有很多很酷的选择。
用变量定义
评论
GNU Parallel的构建具有很高的可移植性。大多数平台都很好地支持sh,zsh,ksh和bash。 csh,tcsh,fish有一些支持。使用parallel --embed,您甚至可以构建一个可以轻松移动到未安装GNU Parallel的系统的脚本。
–奥雷·丹吉(Ole Tange)
18/12/19在0:35
#7 楼
在macOS上,可以使用repeat
命令。repeat 10 ps aux | grep someprocess
#8 楼
上面的@ eduardo-ivanecrun
函数的鱼壳实现function run
set number $argv[1]
for i in (seq $number)
eval $argv[2..-1]
end
end
#9 楼
那将是“监视”-应该几乎是所有使用procps的unix系统的一部分。例如,watch "df -hP | grep /tmp"
只需将命令作为参数(请参阅
man watch
)评论
手表已经有答案了...见右下方...
– mahatmanich
18年6月22日在6:57
评论
stackoverflow.com/questions/3737740 / ...