Articles of bash

文件/调用replace如LD_PRELOAD

是否有一些常用的function,如execve和打开一些电话的替代? 像调用LD_PRELOAD一样。 例: 我们有prog_A使用prog_B 。 几天前prog_B被更新,现在prog_A失败!( 通常的解决scheme是下一个: $: mv /usr/bin/prog_b /usr/bin/prog_B.new $: ln -s /usr/bin/prog_b.old /usr/bin/prog_b $: ./prog_a # now run 但有时这是不舒服和肮脏的解决scheme。 在一些故事中,正确的做法是: $: util "execve+open+stat:/usr/bin/prog_b=/usr/bin/prog_b.old" ./prog_a execve,open&stat是系统调用。 这个util的名字是什么?

睡在某些数字永远持续在Linux bash

我在Ubuntu 13.04中编写了一个bash脚本,它需要睡眠特定秒数的参数。 我已经确定睡眠允许在文档中查找浮点数字: 与大多数需要NUMBER的实现不同,这里NUMBER可能是一个任意的浮点数。 事实上,它适用于某些价值。 例如,对于“0.1”,“0.01”,“0.02”,“0.03”或“0.4”是可以的,但对于诸如“0.04”或“0.05”等其他值,则永远持续。 我的意思是,这将工作: sleep 0.03 …但这将永远持续下去: sleep 0.04 有人知道为什么吗? 谢谢!

自动化input键盘不能用于Linux Mint 15

我已经为Linux Mint 14的用户(也可以在Ubuntu 12.10上使用)制作了这个后期安装脚本,现在我正在为Linux Mint 15和“echo -ne”testing它。 sudo add-apt-repository ppa:some-ppa-to-add'命令在Linux Mint 15上不起作用,但仍然可以在Mint 14上运行。我想为新版本的Linux Mint更新这个脚本。 这里有一个链接到我的后安装scipt: Minty开发 Mint 14的输出如下所示: $ echo -ne "\n" | sudo add-apt-repository ppa:apt-fast/stable You are about to add the following PPA to your system: This PPA contains tested (stable) builds of apt-fast. More info: https://launchpad.net/~apt-fast/+archive/stable gpg: keyring `/tmp/tmpddxueh/secring.gpg' created gpg: requesting key […]

Linux Bash脚本:从用户或文件input中声明var名称

嗨,我想做以下事情。 ./script.sh some.file.name.dat another.file.dat Filename1=$(echo "$1"|cut -d '.' -f 1,2) Filename2=$(echo "$2"|cut -d '.' -f 1,2) tempfile_"$1"=$(mktemp) tempfile_"$2"=$(mktemp) 我知道这个代码不起作用。 我需要创build这些临时文件,然后在for循环中使用它们,其中我将对input文件执行一些操作,并将输出保存在这些临时文件中供以后使用。 所以基本上我想创build依赖于我的input文件的名称的variables名称。 我GOOGLE了很多,没有find任何答案我的问题。 我想感谢您的build议

多个嵌套的回声语句pipe道内核限制

我有一个简单的bash脚本生成fwbuilder嵌套几个回声语句,并通过pipe道到iptables恢复。 我们编译这种方式,而不是只有多个“iptables -A xxx”行,因为它编译和部署更快,也不会丢弃现有的连接。 问题是,我们似乎已经达到了允许的多个redirect的限制(〜23'850行不行,~23600行)。 在内核2.6.18(CentOS 5.x)上运行它,然后打开,在2.6.32(6.x)上运行,它就像一个魅力一样。 脚本本质上是这样的,只是通过一条长长的线路传送给命令: (echo“1”; echo“2”; echo“3”; …; echo“25000”)| /做任何事情 所以我想问题是,有没有简单的方法来增加这个限制,而不重新编译内核? 我会想象这是某种标准inputpipe道字符的限制。 或者我必须做一个操作系统升级? 编辑:哦,还想补充说,在旧内核上运行时,没有显示错误,但在dmesg中显示段错误。

了解BASH中的sorting命令

我正在尝试为了学习的目的对一个名为data的文件进行sorting。 它在我的教科书中给出。 5 27 2 12 3 33 23 2 -5 11 15 6 14 -9 Q1)这种情况下, sort data的顺序是什么? Q2)我正在一个文件夹中工作。 sort data工作,但sort +1n data不。 为什么? 我完全按照书中的方式input它,我得到这个错误 – sort: cannot read: +1n: No such file or directory 编辑 –本书想要跳过第1列并按第2列sorting。这就是为什么可以使用+ n。 我使用lubuntu 13学习unix bash脚本。 PS –这是sort data的输出 14 -9 15 6 2 12 23 2 3 33 […]

Snmpwalk Linux Bash不返回数组

我运行一个nagios服务器上的opensuse linux通过snmp连接到esx 3.5服务器 我试图让snmpwalk返回一个数组,但它只返回一个值。 在esx盒子上,我用下面的shell来查找所有快照的大小 – /usr/bin/find /vmfs/volumes/ -name '*delta*.vmdk' -printf %f' '%s'\n' 这在esx框上运行时返回以下内容 – [root@localhost root]# /bin/sh /etc/snmp/snmp_snapshots.sh testnag01-000001-delta.vmdk 16840704 testnag01-000002-delta.vmdk 167835648 testnag01-000003-delta.vmdk 151058432 在nagios盒子上,我有以下shell – declare -a RESULT=$(/usr/bin/snmpwalk -v 2c -c public 10.10.0.20 .1.3.6.1.4.1.6876.57.101.2 | grep vmdk | awk {' print $4,$5 '} | sed 's/ /_size:/g' | sed 's/\"//g') echo "snapshot 1" […]

你如何暂时隐藏正在运行的bash脚本的输出?

这个问题可能已经或可能没有被问到,我找不到任何地方,我是一个Linux初学者。 我有一个运行在RHEL 4服务器上的./start.sh脚本,每隔一秒发送一次跟踪输出。 示例:跟踪:服务器在alias 1,2等上运行…确保服务器不会退出。 我需要运行我的一些DDoS防护工具和扫描仪,因为它们都在同一时间运行。 尽pipe由于所有的跟踪输出我都看不到发生了什么事情! 我将如何暂时禁用输出,因为它已经运行,同时保持它在后台运行,然后运行我的工具,然后当我完成重新启用输出?

rsync使用shopstar globstar和** /。 – 如何排除目录?

我试图将大型目录结构中的所有文件同步到单个根目录(即不创build子目录,但仍包括所有recursion文件)。 环境: Ubuntu 12.04 x86 RSYNC版本3.0.9 GNU bash版本4.2.25(1) 到目前为止,我已经从一个bash脚本调用这个命令工作正常,并提供所需的基本核心function: shopt -s globstar rsync -adv /path/to/source/**/. /path/to/dest/. –exclude-from=/myexcludefile myexcludefile的内容是: filename */ # the */ prevents all of the directories appearing in /path/to/dest/ # other failed attempts have included: directory1 directory1/ directory1/* 我现在需要排除位于源代码树中某些目录内的文件。 但是由于globstar在所有目录中查找rsync的方法无法匹配要排除的目录。 换句话说,除了我的/*和filename规则,其他的一切都被完全忽略了。 所以我正在寻找一些帮助排除语法,或者如果有另一种方法实现许多目录的rsync到一个单一的目标目录,不使用我的globstar方法。 任何帮助或build议将非常感激地收到。

bash脚本在多个服务器上执行命令

我想要一个脚本,将重新启动各自的服务器上定义的服务。 我想要传递参数如下脚本:例如: sh execute.sh Enter your server and service list: [server1:nginx,mysql],[server2:mysql,apache],[server3:mongodb,apache] 通过这个input,脚本应该在相应的服务器上validation并启动服务。 我可以通过声明variables在单个服务器上执行此操作。 #!/bin/bash Instance_Name=server1 Service_Name=(nginx php-fpm mysql) SSH_USER=admin SSH_IDENT_FILE=~/credentials/user.pem len=${#Service_Name[*]} i=0 while [ $i -lt $len ]; do service=${Service_Name[$i]} ssh -i $SSH_IDENT_FILE -o StrictHostKeyChecking=no $SSH_USER@$Instance_Name 'service $service restart' done 现在我没有想法前进。 请让我知道如果我的问题不清楚。 提前致谢。