我经常看到一些新贵脚本有使用exec ,有什么意义呢? 似乎删除exec的脚本也工作? 例如 start on runlevel [2345] stop on runlevel [06] exec /path/to/program
我知道我可以通过将主机名添加到/etc/hosts来将主机名列表添加到bsh选项卡中 – 完成ssh ,但由于它们在DHCP上,所以这是一个不好的做法。 有谁知道另一个DHCP感知的方式,这不会强迫我干涉Ubuntu太多? (全球解决scheme优先)
我发现自己经常负责更新DNSlogging,并且需要知道刷新何时开始(又称TTL过期)。 我想出了这个bash单行,给了我想要的输出: $ dig +noall +answer www.google.com | \ > awk '{ print $2 }' | \ > { read secs; echo "`expr $secs / 60`m `expr $secs % 60`s remaining ($secs)"; } 输出: 3m 36s remaining (216) 我希望能够围绕这个watch命令,以便我可以让它在terminal运行,并得到一个实时倒计时。 就像是: $ watch -n 10 "dig +noall +answer www.google.com | \ > awk '{ print $2 […]
我们正试图废弃我们的旧的Linux主文件夹服务器。 我们仍然有一些人正在积极使用它。 我们的计划是将过去六个月内没有人使用的家庭文件夹更改为只读。 我们有Mac和Windows客户端通过SMB访问这些共享。 所以我的问题是:是否有一个命令会告诉我最后一次目录或任何其子目录已被修改? 要么 自某date以来已被修改的父目录列表? 这将告诉我哪些用户仍在积极使用他们的主文件夹。
我正在从machineA运行我的下面的shell脚本,它将文件machineB和machineC复制到machineA 。 如果这些文件不在machineB ,那么它应该在machineC 。 下面的shell脚本将把这些文件复制到machineA TEST1和TEST2目录下。 #!/bin/bash set -e readonly TEST1=/data01/test1 readonly TEST2=/data02/test2 readonly SERVER_LOCATION=(machineB machineC) readonly FILE_LOCATION=/data/snapshot dir1=$(ssh -o "StrictHostKeyChecking no" david@${SERVER_LOCATION[0]} ls -dt1 "$FILE_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1) dir2=$(ssh -o "StrictHostKeyChecking no" david@${SERVER_LOCATION[1]} ls -dt1 "$FILE_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1) echo $dir1 echo $dir2 if [ "$dir1" = "$dir2" ] then rm -rf $TEST1/* […]
我可以执行netstat -atulpn | grep java netstat -atulpn | grep java来查找所有的Java进程及其附带的端口,这是非常好的,但是我也想让进程完整的执行参数也显示出来。 我不相信这是netstat到目前为止我所探索过的所有东西都可能的,所以我在想,我将不得不编写一个脚本来处理netstat的输出,然后将这个pid传递给ps ,然后对输出进行优化显示ip +端口和完整的命令行。 有没有更好的方法来做到这一点,或者这是唯一的select?
更新:为其他人添加工作代码 CREDITS: https : //serverfault.com/users/30957/glenn-jackman @Glenn对不起! 只是道歉,我的意思是! 对不起,格伦你的代码需要一些改变,我在这里添加并得到它的工作。 谢谢你! 抱歉我的粗鲁。 这里是任何需要它的人的固定代码。 你可以把这些IP放在一个文本文件中,然后放在servers_addresses里面。 像servers_addresses =('猫ip_list.txt')在IP列表添加IP是这样的10.10.10.1 10.10.10.2 10.10.10.3 如果需要还有更多的例子。 运行一个命令: ./test.sh "sudo cat /etc/hosts" 运行多个命令 ./test.sh "sudo cat /etc/hosts & /etc/init.d/network status" search并replace ./test.sh "sed -i -e 's/SEARCH_STRING/REPLACE_STRING/g' /tmp/FileNAME.txt" 完整的代码: #!/bin/bash (( $# != 1 )) && { echo >&2 "Usage: $0 \"[COMMAND]\""; exit 1; } servers_addresses=( […]
当一个数字大于另一个数字时,我试图让一个脚本去做一些事情,在这种情况下,当系统负载平均值超过一个定义的值时。 所有这些都在评估标准之外。 虽然我build立了一些网站的另一台服务器,我试图保持阿帕奇排队,原因并不重要,但是这个脚本已经在负载平均值低于15的系统上testing和testing,脚本打印出来: “检查是4.68和最大是15.00”DESPITE if条件告诉它不要打印任何东西,如果检查的价值不大于最大负载,这是不是。 我不是bash大师,我有一个胡子,但没有凉鞋,我已经尝试了各种不同的方括号和引用的样式,但我不明白为什么这个脚本打印什么的时候$ check小于$ max_load 。 这是Debian 6,GNU bash,版本4.1.5(1)-release-(x86_64-pc-linux-gnu) #!/bin/bash check=`cat /proc/loadavg | sed 's/./ /' | awk '{print $2}'` max_load='15.00'; high_load_log='/var/log/apache2/apache_high_load_restart.log'; apache_init='/etc/init.d/apache2'; if [[ $check > $max_load ]]; then echo " check is $check and max is $max_load"; #$apache_init stop sleep 5; #$apache_init restart echo "$(date) : Apache Restart due to […]
我想知道是否有一种方法来测量Linux下的tcp / udp端口的带宽? 就是说我search的方法可以告诉,现在tcp / 53需要1MBit / s,tcp / 80现在需要4.5MBit / s。 iperf能够告诉我这个细节,但我的问题是我需要在shell / bash中提取数据供以后使用。
我需要使用openssl在shell脚本中执行一些HTTP GET请求。 下面显示了我正在使用的线路。 这是parsing以下格式的XML响应的内容。 <Result>success</Result> <Result>failure</Result> echo -e "GET /test HTTP/1.1\r\nHost:$(hostname)\r\n\r\n" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P –color '(?<=Result\>).*(?=\</Result)' 这工作,并相应地返回string“成功”或“失败”。 我面临的问题是openssl命令在执行GET请求后不会终止,而是坐在那里等待更多的input。 我相信这是由于隐含的-ign_eof防止由-quiet选项引起的自动终止。 我已经尝试使用-no_ign_eof选项,但是这会导致openssl命令在GET请求收到响应之前终止,所以我不能得到响应的内容,如果我使用它。 我怎样才能修改这个命令,所以我可以传递GET请求通过stdin(要求,因为我想把它放在一个循环),但有openssl命令后,每个请求终止?