Tag: FreeBSD
在 Linux 下有时会有一些暂存盘或日志档需要定时删除, 如果只要在特定目录下, 删除档名包含有指定字串的旧档案, 可以不用 Shell Script, 而直接在 crontab 用 find 指令完成 。 例如我想将 /var/www/html/tmp/ 目录下, 将所有超过 7 日的档案, 并以 “delname.log” 作为档案开头删除, 可以在 crontab 加上以一行, 先开启 crontab : …
在 Shell Script 读取输入时, 很多时需要按字串的长度作出不同的处理, 而 Shell Scrit 检查变量的字串长度十分简单, 写法如下: 上面的程式码会检查用户输入的变量 “string”, 然后检查 string 变量的长度, 如果字串长度大过 10, 会显示 “Error!”, 并结束程式执行; 如果变量的字串长度等如或小于 10, 会继续执行。
Linux 下的目录结构分工很仔细, 虽然初时接会很困惑, 但用久了反而会觉得十分清晰, 即使在不同的发行版下使用, 要习慢也很容易。以下是 Linux 下目录结构及内含的档案内容。 /boot : /boot 是一个独立的硬盘分割区, 用作储存 Linux 核心, Linux 核心设定档 (Config-x-x-x), initramfs 及 GRUB (boot loader). 当完成 BIOS 程序后, 会由 /boot 接手启动系统. …
wget 是在 CLI 下十分好用的下载工具, 如果遇到下载的档案很大, 或者下载速度很慢时, 可以用以下方法让 wget 在背景执行。 wget 已经内建背景执行的功能, 语法是: $ wget -bqc http://path-to-url/filename.iso 上面的 wget 指令加入了 -bqc 参数, 其中 b 代表 background, 即背景执行的意思。 另一个方法是用 nohup 指令, …
当写 Shell Script 时, 很多时需要取得 Shell Script 本身的目录位置, 以下教学是在 Shell Script 取得目录位置的写法。 在 Shell Script 的 $0 变量代表指令的第一个参数, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”: #!/usr/bin/sh echo …
sort 指令是在 Linux 下的排序指令, 可以将资料以不同字段以数值及字母排序。sort 默认会用以下条件排序: — 数字会排在字母前面; — 小写字母会排在大写字母前面; 以一个简单的例子说明使用方法, 例如用 “ls -l” 列出档案清单, ls 默认是用档案名称排序, 想要用档案大小排序, 可以这样: $ ls -l | sort -n -k 5 上面的 “5” …
cut 指令可以将档案内每行资料, 选择性地撷取指定的部份, 对于 Log 分析或过滤资料十分好用, 当然除了支援撷取档案资料外, 也可以用管线 (pipe) 汇入资料, 以下教会是关于 cut 指令的用法。 cut 指令的语法: cut … … cut 指令主要有以下参数可以: -b: 输出指定的范围, 以 bytes 作为单位. -c: 输出指定的范围, 以字符数量作为单位. -d: …
在 Linux 下如果需要将档案内指定某一行资料删除,可以用 sed 指令达成,以下教学会介绍在 Linux 下用 sed 指令,删除档案内指定的整行资料。 删除指定行数 当知道要删除的资料在档案那一行,或者在某一个行数范围时,可以直接指定删除的行数,例如: 删除档案 filename.txt 的第 10 行: 删除档案 filename.txt 的第 10 至 15 行: 将包含有 “delete_str” 字串的一整行资料删除: 将包含有 “delete_str” 字串的一整行资料删除: …
当开启 Apache 的 access_log 查看里面的内容,查询记录内简中会看到一堆 “internal dummy connection” 的记录: ::1 – – “OPTIONS * HTTP/1.0” 200 – “-” “Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.4.16 (internal dummy connection)” 根据 Apache 官方的说明, 这是 …
一般上在 crontab 自动执行的指令, 会将所有指令标准输出及错误放到 /dev/null, 这便会略过所有指令的输出, 例如用 crontab 执行 /root/my-script.sh, 一般上语法是这样写: * * * * * /root/my-script.sh > /dev/null 但有时需要将执行指令的输出储存下来, 只要将 /dev/null 换成记录档的位置即可, 例如想把指令的输出放到 /var/log/mycrontab.log, 可以这样写: * * * …