Articles of bash

简单的nagios脚本失败

以下if-then-else有什么问题? 我从来没有打过别的。 if [ $result > $value ]; then echo HEALTH: OK. Result is $result Value is $value exit 0 else echo HEALTH: CRITICAL. Result is $result which is over $value exit 2 fi # ./check_cw_auto <AWS variables> 5.0 HEALTH: OK. Result is 275593.8 Value is 5.0 # ./check_cw_auto <AWS variables> 10000000.0 HEALTH: OK. Result […]

在较低优先级或限制CPU下运行php脚本

我有一个运行一组PHP脚本的bash脚本。 运行时,需要花费一个小时,并将CPU固定在95-99%。 这导致我们的灯栈(主要是Apache进程)的问题,我们的网站在同一台服务器上开始吐出超时或500错误。 我怎么能: 以低优先级运行bash脚本和所有相关任务(也称为PostgreSQL数据库的php脚本),因此web服务器的apache,php和db任务总是被优先化,或者 限制脚本和相关任务的CPU使用率,例如25%的CPU 我不确定哪个是更好的解决scheme。

通过USB连接设备时执行命令

我目前有一个系统,将我的Linux服务器备份到/media/usb上的USB存储设备上。 这一切正常工作。 但是,我实际上有两个驱动器,我们试图每天交换。 有没有logging当USB设备插入时的日志logging和使用sendmail或类似的方式发送电子邮件给pipe理员如果驱动器尚未交换3天以上的方式?

我怎么脚本mkfs问“是整个设备,而不是一个分区! 仍要继续?”

我正在尝试创build一个格式化Amazon EC2 EBS卷的脚本,所以我可以安装它。 从命令行看起来像这样: > mkfs -q -t ext4 /dev/sdf /dev/sdf is entire device, not just one partition! Proceed anyway? (y,n) (该命令是正确的;不需要为我的目的创build一个分区表) 我的问题:因为这个命令应该是在一个自动化的脚本中运行,我不能在terminal上有这个问题; 没有人会回答,脚本将挂起。 我如何避免这种情况? 我试过了: > echo y | mkfs -q -t ext4 /dev/sdf 但这并不能解决问题。 -q选项也没有区别。

我如何search目录中的文件(和子)

使用bash shell,我怎样才能search文件夹中的特定文件(及其子文件夹)

如何在bash上编辑ssh的命令完成?

(我问过关于zsh的这个问题 ,但是我也使用了bash,并且在那里也会发现它有用,因为bash比zsh拥有更多的用户,所以我猜测其他许多人也是如此。 我想在bash上设置命令完成来显示主机名称 ssh [TAB] 从我的.ssh / config文件(最好从known_hosts和/ etc / hosts以及其他任何有意义的地方)中提取名称,然后显示一个列表。 它目前做了一些,但是 它根本不使用.ssh / config 它首先需要用户名,即使使用.ssh / config也不需要input用户名 它提供了多个列表(可能来自known_hosts,另一个来自/ etc / hosts,但我没有证实) 所以我想在inputssh [TAB]之后在(最好是单个)列表中包含已知的用户名和已知的主机名, (我在Google之前来到这里,因为1)会导致答案被存储在这里,2)它可能更有效率。 如果没有人回答,我会寻找答案。)

防止Linux中的bash(和ksh)历史更改

从外观上看,修正ksh使历史更改不可能是相当容易的。 我已经看到所有的build议,使HIST *环境variables只读,并使用chattr使历史文件追加(与chattr + .sh_history)。 然而,Bash有两件事似乎使得不可能防止历史的改变:历史命令(带有历史-c和历史-d)以及历史文件与实际运行历史(保存在存储器中)的分离, 。 我也在这里阅读serverfault,如果你杀了当前的shell,那么历史将不会被写出来。 有什么办法可以防止Bash的历史变更? 我希望能够保存所有的用户命令,而用户无法从历史中删除任何东西。 Korn贝壳的任何进一步提示也是受欢迎的。 (我知道ksh-93审计…不知道我们是否可以使用它。)

杀死进程组不工作

我在Debian GNU / Linux上。 “杀”的手册页说我可以使用负PID值杀死进程组,但是在命令行上运行时,它不起作用: $ /bin/kill -9 -21581 /bin/kill: invalid option — '2' Usage: kill [options] <pid> […] etc. 当使用bash内置kill时,它工作正常。

在shell中查找非零大小的文件

我需要得到一个目录中的非零大小的文件的名称列表。 这应该是在一个shell脚本,所以bash(或Perl一行)将是理想的。

如何在Bash中执行中间函数

我试图parsing一个string在bash中的文本,然后我可以抛出一个案例select,但我有最大的麻烦,试图找出如何做到这一点。 在VB中,我知道它真的很容易 someString = "Hey there" Select Case Mid(someString,1,5) Case "Hey t" 'Do something Case "Go aw" 'Do something else Case 'Else 'String is unrecognized End Select 我似乎无法find任何能够显示如何执行与Mid函数等效的string操作函数的任何内容。 我是否使用sed ,我不相信我可以使用awk或cut因为我没有试图根据模式修改string,但是在Unix中必须要这么简单。