Tag: Shell Script
crontab 容许最少自动执行间隔为 1 分钟, 即在 crontab 的格为是: 如果需要将自动执行时间设定为少于 1 分钟, 或者以秒数为单位, 可以透过 crontab 配合 sleep 指令完成, 或者建立一个 shell script 再配合 sleep 实现。 以下会示范在 crontab 或 shell script, 设定每 30 …
Shell Script 对日常系统维护很实用,对于多用户系统,Shell Script 经常面对一个问题是重复执行,即一个 Shell Script 正在执行时,避免另一个使用者执行。另一个情况是,当 Shell Script 变得复杂及庞大时,放到 crontab 定时执行时 (例如每分钟执行一次),Shell Script 还未完成上次的执行,就重复自动执行一次。 要防止 Shell Script 重复执行,一般上会用 lock file 及 PID 的方法,不论是 lock file 还是 PID,除了用 …
在 Shell Script 连接 MySQL, 可以用以下语句实现: $ mysql -u db_user -pdb_password db_name -e ‘sql_query’ 如果系统内没有其他使用者,这个方法没什么问题,但如果系统有其他使用者,在执行 Shell Script 时,其他使用者便可以用 ps 这类指令,看到正在连接 MySQL 的使用者名称及密码。 较安全的方法是将 MySQL 使用者名称及密码储存到家目录的 .my.cnf 档案,那便不用在 Shell Script …
一般讲法是每四年就有一年是闰年, 但这个讲法只符合大部份的闰年, 有些年份还是不会每四年一闰的。 在求学时期学写程式时, 就写过这样的程式, 很简单检查该年是否闰年, 而闰年的规则有 2 条: 1. 年份可以被 400 整除, 是闰年. 2. 年份不能被 100 整除, 但可以被 4 整除, 是闰年. 现在很多程式语言也不用测试上面的规则, 因为程式语言的开发者已经写好, 例如 PHP 的 date() 函式, …
Shell Script 要检查目录是否没有内容,可以用以下写法: 以上程式码用了 ls -A 指令检查, ls 的 -A 参数会显示包括隐藏档的所有目录内容,只是不会显示 “.” 及 “..”,从而检查 /var/www/html 是否空白目录。
很多情况需要在 CLI 下执行 PHP, 例如要执行 /root/my-script.php, 只要执行以下指令便可以: # php /root/my-script.php 在默认的情况下, 执行以上 PHP script 时, 会跟着默认的 php.ini 有着相同的设定。在 Apache 还好, 可以用 php_admin_flag 设定个别 VirtualHost, 但在 CLI 就不可以用 php_admin_flag 设定了。 …
Linux 默认的内存管理会自动释放内存的 cache memory。跟 Windows 不同, Linux 开启一段时间后, 即使关闭了一些 process, 用 top 或 free 指令查看内存的使用状况时, 都是只剩下不足 1% 的可用空间, 实际上只是 cache memory 占用了内存空间, 而 Kernel 会在 process 需要使用内存时, 自动释放 cache …
档案内的字串进行搜寻及取代很多时都会用到, 在 Linux 下有很多方法实现, 而 sed 进行字串的搜索并取代十分方便, 因为 sed 是内建的指令, 也支援 regex, 即使放在 Shell Script 也可以。以下列出一些 sed 取代字串的常用例子: 将档案 filename.txt 内的 abc 取代为 “xyz”: /linux/sed-search-replace/ $ sed -i ‘s/abc/xyz/g’ …
Linux 的系统管理员, 有时需要在 CLI 执行单一 MySQL 指令, 要实现很容易, 只要用 mysql 的客户端即可, 以下会以 MySQL Server 的环境作为使用例子, 但在 MariaDB 同样适用。 只要用 CLI 的 mysql 指令 (mysql client) 加上 -e 参数, 就可以直接加入需要执行的指令, …
透过路由器连接上网的 Linux 系统, 路由器会分配一个私 IP 地址, 用 ifconfig 指令只会看到私有 IP 地址。如果在 Shell Script 需要查看对外的 IP 地址, 除了可以用撷取一些显示 IP 地址的网站外, 以下分享一个使用 dig 及 OpenDNS 取得出外部 IP 的方法。 使用上十分简单, 只要一行指令便可以取得 IP: …