Tag: Shell Script

Shell Script 检查是否有输入参数

在写 Shell Script 时, 可以用变量 $1, $2, $3…… 很方便读取使用者输入的参数, 以下提供两个检查使用者是否有输入参数的方法。 1. $# $# 变量储存了使用者输入的参数数量, 如果 $# 是 0, 便表示使用者没有输入参数, 而这个变量也可以用作检查使用者输入了多少个参数, 具体写法如下: 2. $1 另一种做法是检查 $1 变量, $1 是使用者输入的第一个参数, 如果 …

对 rsync 实施限速

rsync 是一套 Linux 下的同步备份工具, 对日常备份十分有用。如果是从远端主机进行备份, 而且备份的档案容量很大, 有可能会将主机的频宽全部吃掉, 那便会在备份时影响主机的正常使用。 rsync 内建已经支援限速的功能, 只要使用 –bwlimit 参数, 便可以限制传送档案时硬盘的 I/O 速度, 从而达到限速的效果。即使是本机备份, –bwlimit 也可以避免备份时系统的负载过高。 例如将 I/O 限制为 1000 KBytes, 语法是这样: 备份到逹端主机的做法相同, 只要加上 –bwlimit=速度 便可以:

Shell Script – 发现 Load Average 高自动执行指令

当系统的 Load Average 很高时, 可能面临当机的风险, 遇到这个问题可以用 Shell Script 定时检查系统的 Load Average, 当发现 Load Average 到达某一个设定好的数值时, 便自动执行一些指令, 例如重启服务, kill process 或向系统管理员发出电邮通知等。 以下 Shell Script 会透过定时读取 /proc/loadavg 的数值, 当发现 Load Average …

Shell Script 检查并自动重启 Apache httpd

如果主机出现问题时, 可能负载过高或者服务当掉, 最理想的做法还是要找出原因, 很多时只要修改一些设定便可以。 早前遇到一位客户, 他安装在 VPS 的 Apache 会无故当掉, 间隔由几小时到一天不等, 检查后 Load Average 一点也不高, 当掉后只要重新启动 Apache 便没问题, 初部估计可能是 mpm_prefork 的设定问题。 由于修改后要观察一段时间, 这段时间 Apache 也可能当掉, 便写了这支 Shell Script, 会自动检查 …

Shell Script 读取网页内容储存到变量

Shell Script 要读取网页内容,并将输出结果储存到变量,可以用一些在 CLI 下执行的文字浏览器,由于很多系统都有安装 wget 及 curl, 以下文章会介绍使用 wget 及 curl 这两种方法完成。 如果系统并未安装 wget 及 curl,可以用以下指令安装,如果已经安装了,则不用安装: RHEL, CentOS # yum install curl wget Debian, Ubuntu $ sudo apt-get …

Shell Script 检查系统帐号是否存在

在 Shell Script 想检查系统帐号是否存在, 可以用 grep 搜索 /etc/passwd 的内容达成, 指令是这样: 以上指令会检查 /etc/passwd 档案内, 是否有 “useraccount” 这个帐号存在, 其中 “^” 表示指定前面没有任何字符, 而 “:” 则是在 /etc/passwd 用作分开每个字段的分隔字符。 上面指令执行后, 如果帐号不存在, 不会回传任何内容, 如果帐号存在, 则会回传在 …

Linux 检查密码强度工具 — cracklib

要检查密码的强度, 单纯以密码长度及是否包含英文字母, 数字并不足够, 例如 “abcd1234” 便是 8 个位, 包含字母及数字的密码, 但这个密码很简单。cracklib 就是一套检查密码强度的工具, 以下是 cracklib 的安装及使用方法。 在 Redhat 及 Debian 系列的发行版, 安装 cracklib 都很方便: RHEL / CentOS / Fedora: # yum …

sed 删除包含 keywords 的整行资料

sed 除了可以对档案内的 keyword 做 search & replace 外, 也可以将包含有 keyword 的整行删除, 语法是: 以上指令会对 filename 逐行搜索, 并将有 “keyword” 的整行删除。 另一个情况是想将两个 keywords 中间的整行资料删除, 语法可以改成这样: 以上指令会在 filename 内, 将有 “keyword-1” 及 “keyword-2” …