Articles of bash

发送邮件到多个地址不起作用

我试图在SVN上设置一个post-commit钩子来使用bash脚本向一群用户发送邮件。 我已经成功地设置了钩子,并且只有一个邮件地址被指定时才起作用。 但是,当更多的电子邮件地址添加没有邮件到达。 bash脚本如下: 提交后: #!/bin/sh REPOS="$1" REV="$2" SENDTO="address1@domain.com, address2@domain.com" # Send it to these people, calling the script we created above /home/www/svn/bin/svn_email_commit.sh "$REPOS" "$REV" "$SENDTO" svn_email_commit.sh: #!/bin/bash REPOS=$1 REV=$2 SENDTO=$3 SENDFROM=svn@audioaffair.co.uk LIMITDIFF=200 # Do various other stuff and dump mail body to a temp file $TMPFILE… # Send email /bin/cat $TMPFILE | /bin/mail -s […]

如何在某个位置replacestring

假设我想replace一些string的第n个字母,我该怎么做? 我尝试了这样的事情,但这是不正确的: #!/bin/bash index= # let say 2 s='Hello' echo ${s/$index/'a'} # This should print Healo

在x个实例上并行执行任务

我需要执行一个数据集处理任务。 这是一个简单的PHP脚本来预热memcached机器。 数据集包含密钥(约2400万) 如果我要从一台机器上执行热身脚本,则需要将近三天才能完成。 但是如果我要“分裂”并运行6个不同的过程,那将需要我一天的时间。 如果我知道我的networking中的所有其他机器的IP地址,并有ssh访问,是否有一种方法来并行这个任务?

检查两台服务器上的文件修改

如果我在服务器A和服务器B上有一个文件,即/etc/file.cfg。我们如何检查服务器A上的文件是否比服务器B上的文件新? 如果它在本地机器上,那么我们将使用file1 -nt file2。

更快的MySQL DB从远程机器拉到本地机器

我使用这个命令将一些远程数据库拉到本地数据库: $ ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb 我看到这在数据库上运行了一堆单独的命令。 有更快的方法吗? 我将从本地机器启动命令,并由cron运行。 更新 这种方法导致:在转储表时的查询期间丢失与MySQL服务器的连接

为了bash脚本在du-sk上剥离“额外空间”?

我正在尝试使用du -sk来获取两个文件夹的大小 dirsize_temp=`du -sk /folder/path/here` 然后用一个if语句来比较大小。 唯一的问题是,当你运行命令时,它会返回类似的东西 123456 /folder/path/here 我目前正在使用 dirsize=${dirsize_temp%%/*} 去除“ /folder/path/here ”部分,但我有问题摆脱空间。 他们似乎并不是实际的空间,所以“ ${dirsize//\ /} ”或“ ${dirsize// /} ”无法将其删除,但仍然使我无法比较两个variables。 有没有一些转义字符,我缺less,或更容易的方法来获得两个文件夹的大小没有额外的东西钉在最后?

通过OS X二进制安装PHP 5.4,但terminal中的`php`仍然使用5.3

我用一个很好的单行命令从php-osx.liip.ch安装PHP 5.4 Mac OS X Lion。 这在Apache中完美运行 – 我的本地站点现在正在使用PHP 5.4。 但是当我从terminal运行php -v ,它仍然使用5.3版本。 这是造成问题。 which php给我/usr/bin/php ,所以这是旧版本仍然安装的地方。 经过一番挖掘,我发现5.4二进制文件位于/usr/local/php5/bin/php 。 所以我几乎在那里…但是,我如何使php命令parsing为/usr/local/php5/bin/php ?

sedreplaceshell文件里面

我有一个shell文件,需要在php文件中执行一些文本的replace。 需要更换的线路是: $database = $db."_db"; 实际的sed命令需要包含一个variables,所以不知道我应该逃避什么,在哪里? #!/bin/sh sed -is/$db."db"/$DATABASE/ mysql_connect.php 谢谢。

vmstat消耗了大部分CPU的功耗

当我发出没有任何参数的vmstat命令时,我得到这个结果: # vmstat procs ———–memory———- —swap– —–io—- –system– —–cpu—— rb swpd free buff cache si so bi bo in cs us sy id wa st 7 117 0 719328 1251624 258624672 0 0 346 64 0 0 4 0 92 3 0 正如你可以看到CPU空闲是92%。 无论我发出命令多less次,我都会得到类似的结果。 但是当我用时间间隔参数发出vmstat时,cpu空闲值立即下降: # vmstat 5 procs ———–memory———- —swap– —–io—- –system– —–cpu—— rb […]

在由空格分隔的bash输出上运行命令

~]$packageManager list packages 给回 wordA1 wordB1 wordC1 wordA2 wordB2 wordC2 wordA3 wordB3 wordC3 然后,我想对所有的B列单词运行第二个命令,例如 ~]$packageManager install packages wordB1 wordB2 wordB3 我怎样才能达到这个优雅,也许作为一个class轮与xargs ..?