Articles of bash

顶级输出在cron中缩小

我试图通过cron发送一封电子邮件,以了解哪些进程占用了我的服务器。 它工作正常,但由此产生的电子邮件太窄,我需要了解更多的过程。 这是我正在使用的脚本(从这里偷走它: http : //www.inmotionhosting.com/support/website/server-usage/create-server-load-monitoring-bash-script ): #!/bin/bash trigger=10.00 load=`cat /proc/loadavg | awk '{print $1}'` response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'` if [[ $response = "greater" ]] then top -cSbn 1 | head -14 | tail -8 | mail -s"High load on server – [ $load ]" […]

当一个命令吞吐太多的输出时,你怎么做?

我试图解决一个共同的烦恼:当SSH进入远程服务器时,我经常做的事情会产生比我所期望的更多的输出。 例如,用一个模式来查询一个大的日志文件,结果太笼统了。 当我坐在那里的时候,碰到了垃圾,希望我记得pipe到less。 到目前为止,我最好的想法是尝试configuration我的shell总是页面输出,我问了另一个问题 。 除此之外,我只有不甚理想的解决scheme: 耐心等待输出完成 训练自己总是努力减less 获得更大的pipe道和更快的盒子,使输出更快 你是做什么?

从shell创build数千个文件

我有成千上万的目录,他们都有这种格式; /var/www/vhosts/[USERNAME].company.com/conf/ 我有一个名为x.txt的文件,它的内容应该有 [USERNAME] and some static text… 所以当我做dir / var / www / vhosts / * / conf /时,我得到了所有需要复制的文件,但是,我不知道如何抓住[USERNAME]并将其放入该文件,我需要复制。 所有的build议欢迎。 我只能在这个环境中使用shell脚本。 谢谢,

用一个外部文件的variables来控制一个bash脚本

我想要像这样控制一个bash脚本: #!/bin/sh USER1=_parsefromfile_ HOST1=_parsefromfile_ PW1=_parsefromfile_ USER2=_parsefromfile_ HOST2=_parsefromfile_ PW2=_parsefromfile_ imapsync \ –buffersize 8192000 –nosyncacls –subscribe –syncinternaldates –IgnoreSizeErrors \ –host1 $HOST1 –user1 $USER1 –password1 $PW1 –ssl1 –port1 993 –noauthmd5 \ –host2 $HOST2 –user2 $USER2 –password2 $PW2 –ssl2 –port2 993 –noauthmd5 –allowsizemismatch 来自一个控制文件的参数如下所示: host1 user1 password1 host2 user2 password2 anotherhost1 anotheruser1 anotherpassword1 anotherhost2 anotheruser2 anotherpassword2 其中每一行代表脚本的一次运行,参数被提取并作为variables。 这将是最优雅的方式呢? 拍

multithreading下载与shell脚本

比方说,我有一个文件有很多url,我想要使用任意数量的进程并行下载它们。 我怎样才能用bash做到这一点?

如何search整个系统(Linux)的特定string?

我需要find这个string: 7z a -p 我试过了: grep -iR“7z a -p”/ 但似乎在一段时间后,有很多: grep: /sys/class/vc/vcs5/power/autosuspend_delay_ms: Input/output error grep: warning: /sys/class/vc/vcsa5/subsystem: recursive directory loop grep: /sys/class/vc/vcsa5/power/autosuspend_delay_ms: Input/output error grep: warning: /sys/class/vc/vcs6/subsystem: recursive directory loop 编辑 – 但是,这似乎只是看静态文本文件。 另外,运行时区域,内存和进程呢? 即整个系统? 例如对于MySQL: ps aux | grep "mysql -u user -p" 显示: 38164 4292 pts/0 S+ 13:16 0:00 mysql -uodbcuser -px xxxxxxxx […]

用户GPG密钥不能被SUDO使用

我创build了一个运行重复的脚本来备份我在VPS上的文件,并使用我作为用户生成的GPG密钥。 当我尝试运行这个脚本作为SUDO我得到: GPGError: GPG Failed, see log below: ===== Begin GnuPG log ===== gpg: C7B2Y6DO: skipped: public key not found gpg: [stdin]: encryption failed: public key not found ===== End GnuPG log ===== 现在我明白了这是为什么(因为它不是SUDO的密钥,它是用户密钥),但是在我去之前为SUDO重新生成一个密钥有可能让sudo使用用户密钥? 不是很重要,但脚本是build立在这三个网站的组合: http : //www.cenolan.com/2008/12/how-to-incremental-daily-backups-amazon-s3-duplicity/ http://www.randys.org/2007/11/16/how-to-automated-backups-to-amazon-s-s3-with-duplicity/ https://help.ubuntu.com/community/DuplicityBackupHowto

如何使用uuid获取闪存驱动器的安装点?

我是ubuntu linux的初学者,我需要编写简单的bash脚本,可以使用此分区的uuid标识必要的闪存驱动器(其中只包含一个vfat分区),并获取此闪存驱动器的挂载点。/ etc / fstab文件does'nt包含此驱动器的mountig规则。 例如,让分区UUID为7DCD-9380使用readlink工具,我可以在/ dev目录中获得设备链接: teddy@st1:~$ readlink -f /dev/disk/by-uuid/7DCD-9380 /dev/sdc1 但是我怎样才能得到/ dev / sdc1设备的挂载点?

将服务器configuration通过SSH进行版本控制

我在生产中有一堆* nix服务器。 我想把它放在版本控制中是重要的configuration文件 我的基本想法是 放置一个分布式版本控制系统,使每个系统的configuration保存在自己的驱动器上。 configuration更改的方式是通过编辑器或通过外部源。 假设在$ shell中使用$ EDITOR,可以在保存文件时添加一个额外的命令(所以文件被添加到git中)。 这可能是有问题的,因为用户不一定会使用vim /etc/my.cnf,它可以从vim中打开my.cnf 另一个变化的来源可以通过一个cron脚本来捕获,每一个小时运行一次,并向版本控制添加东西(这已经足够好了)。 然后,git仓库可以被拉到一个中央的地方保pipe。 1小时已经足够好了,因为假定捕获变化的第一种方法大多数情况下都是有效的。 我想知道,如果有一些工具已经这样做(或做得更好)。 在用户发起的每个configuration更改中,他/她都被要求将更改添加到本地回购中。

Unix Cron:我们可以设置cron作业同时运行

我在crontab中创build了一个条目来在午夜执行一个作业,例如用户A. 在早上,我发现没有脚本的结果,检查/ var / cron / log,我发现在那个小时内(同一时间)只有脚本用户root被执行。 问题:a)我们可以在cron中设置多个作业同时执行。 b)如果不是? 这是否意味着用户root cron优先于任何其他用户执行cron作业? 这是他们的样子。 root $ crontab -l 05 00 10 * * /opt/sdf/sbin/somescriptA.sh> / dev / null 2>&1 #Test userA $ crontab -l 05 00 10 * * /opt/sdf/sbin/somescriptB.sh> / dev / null 2>&1 #Test