Articles of shell

根据修改时间将来自多个来源的文件同步到主副本

我使用rsync将多个服务器上的文件转换为“主副本”。 有时同一个文件在不同的来源有不同的内容。 我想要的是保持最后修改的一个。 我希望rsync有类似–time-only (类似于–size-only )的东西,所以它可以简单地根据上次修改时间进行同步。 如果没有这样的事情,当同步从不同的来源(如果大小或校验和不匹配)时,rsync会一遍又一遍地覆盖相同的文件。 有没有更好的方法来做这种同步?

多个机器的Linux Web控制台

我正在寻找一个基于networking的工具,让我做到以下几点: 为多个服务器提供一个基于Web的UI 服务监控:为每个服务器我想看到所有正在运行的守护进程,并能够启动/停止/重新启动它们(就像Windows服务) 有一个交互式的基于Web的shell允许直接从我的浏览器执行命令到多台机器 快速脚本:能够直接在浏览器中创build脚本并运行并将其部署到我的所有机器上 你知道周围是否有类似的东西?

如何select一个用户,并删除他们是使用PowerShell(与Quest)的成员的所有组?

我已经读了很多网上有关这个,并认为我find了一个解决scheme,但似乎并没有像我所期望的那样工作。 我想根据用户名input一个用户,然后删除它所属的所有组。 与进入ADUC基本相同,select用户,select“成员”选项卡,突出显示所有内容(当然,域用户除外)并select删除。 这是我试图使用的命令: Get-QADUser -Name $username | Remove-QADMemberOf -RemoveAll 其他人在网上说,它为他们工作,但到目前为止,它不适合我。 它没有给出错误,它接受命令就好,但是当我看着ADUC时,组仍然在那里为用户。 任何关于我可能做错的build议? 从具有域pipe理员权限的Windows 7执行,加载Exchange cmdlet和Questpipe理单元。 谢谢!

df -h在VPS上报告磁盘空间

当我在我的新的Ubuntu Linux vServer上运行命令df -h时,我得到以下内容: # df -h Filesystem Size Used Avail Use% Mounted on /dev/hdv1 466G 33G 434G 7% / none 16M 0 16M 0% /tmp 运行du -sh给出 # du -sh du: cannot access `./proc/13624/task/13624/fd/4': No such file or directory du: cannot access `./proc/13624/task/13624/fdinfo/4': No such file or directory du: cannot access `./proc/13624/fd/4': No such […]

while循环从grep读取多行

我正在AIX 5.3中编写一个脚本,它将通过df的输出循环,并检查每个卷与另一个configuration文件。 如果卷出现在configuration文件中,它将设置稍后在脚本中需要的标志。 如果我的configuration文件只有一个列,我使用for循环,这完美的作品。 然而,我的问题是,如果我使用一个while read循环来为每行填充多个variables,那么while和done之间设置的任何variables都将被丢弃。 例如,假设/netapp/conf/ExcludeFile.conf的内容是一堆包含两个字段的行: volName="myVolume" utilization=70 thresholdFlag=0 grep volName /netapp/conf/ExcludeFile.conf | while read vol threshold; do if [ $utilization -ge $threshold ] ; then thresholdFlag=1 fi done echo "$thresholdFlag" 在此示例中,即使卷出现在文件中并且其利用率大于阈值,thresholdFlag也将始终为0。 我可以在那里添加一个echo "setting thresholdFlag to 1" ,看到回声,最后还是会回显0。 有没有一个干净的方法来做到这一点? 我认为我的while循环是在一个子shell中完成的,而且我对variables的修改实际上是在done之后丢弃的局部variables。

当我按Ctrl + C时,如何杀死并等待后台进程在shell脚本中完成?

我试图设置一个shell脚本,以便它运行后台进程,当我按Ctrl + C shell脚本,它杀死了孩子,然后退出。 我设法得到的最好的是这个。 看起来在等待发生之前kill 0 -INT也会杀死脚本,所以shell脚本在孩子完成之前死亡。 关于如何让这个shell脚本发送INT后等待孩子死亡的任何想法? #!/bin/bash trap 'killall' INT killall() { echo **** Shutting down… **** kill 0 -INT wait # Why doesn't this wait?? echo DONE } process1 & process2 & process3 & cat # wait forever

如何find多个服务器上最大的文件并总结其大小?

我试图find/ export / home目录中最大的文件,并加起来(总和)它们的大小。 脚本: #!/bin/bash filename=hostnames > export_home.log while read -r -a line do hostname=${line//\"} echo $hostname":" >> export_home.log ssh -n -t -t $hostname "sudo find /export/home -type f -mtime +180 -size +250000k -exec du -hsk {} \;" >> export_home.log done < "$filename" 示例输出: server-34: 210M /export/home/john/142933-02/failsafe_archive 178M /export/home/john/137137-09/failsafe_archive server-35: server-36: 142M /export/home/marc/bdb/db-5.2.36.tar 446M […]

有没有办法通过脚本来控制IDRAC控制台

有没有办法通过脚本来控制IDRAC控制台,也就是说,如果我在裸机服务器上安装操作系统,并且只有IDRAC作为源,并且想要select选项1或2或3,而不是手动按/input1 ,2或3有什么方法可以通过脚本(Perl,Python ..等)来控制, 我正在开发一个项目,我们必须在裸机服务器上自动安装Hypervisor,我们需要编写一个脚本来与IDRAC 7控制台进行交互。

Windows删除文件夹'。'

我正在使用UrbanCode Deploy进行Windows代码部署,并在我的文件夹中创build了一个文件夹'。'。 。 我已经尝试了所有的PowerShell的remove-item命令和标志,我可以想到,我试过robocopy移动/清除复制到别的地方,并运行chkdsk没有报告错误。 当我手动删除它,我得到“错误0x80070091:该目录不是空的”。 当我尝试通过PowerShell删除它,我得到“Get-ChildItem:path不是一个合法的forms” 如果我打开“。” 文件夹,就好像我做了'ls -l ./'。 如果我更深入一点,我得到一个错误“此文件path指的是一个不可用的位置。 任何想法如何删除这个文件夹?

如何通过退出代码表示模式的存在,而不改变标准输出

我需要运行cmd1 。 当且仅当从STDOUT中缺lessPATTERN时,我也需要运行cmd2 : cmd1 | grep "$PATTERN" || cmd2 但是我希望看到所有来自cmd1的输出,而不仅仅是匹配PATTERN的行。 我知道我可以做这样的事情: OUTPUT=`cmd1` echo "$OUTPUT" echo "$OUTPUT" | grep -q "$PATTERN" || cmd2 但是这会将STDOUT与STDERR分开。 另外,我宁愿有一个方便的一行。 所以我正在寻找一个grep的选项,或者替代grep,说:“ 不要过滤,只需设置退出代码 ”。