#38 获取 Shell Script 所在脚本
Linux Shell 2018-07-17CURRENT_PATH=$(dirname $(readlink -f "$0"))
coding in a complicated world
CURRENT_PATH=$(dirname $(readlink -f "$0"))
total
内存总数used
使用内存free
未使用内存shared
Memory used (mostly) by tmpfs (Shmem in /proc/meminfo)buffers
Memory used by kernel buffers (Buffers in /proc/meminfo)cached
Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)available
可用内存我写 Shell 脚本一般都是用 bash 执行,一般我会在头部插入 set -xue
命令, 助记:蛇血。
那么这个命令的作用是什么呢?
set 是 bash 提供的一个命令,用来管理 bash 的一些行为。
x
: 在执行命令前,输出所有命令,包括参数。u
: 遇到未定义变量时,报错。e
: 如果遇到错误,程序退出。其他更多参数,参考:set --help
或 help set
。
比较独特的命令 [
/tmp
目录下的文件失败
项目中有一个下载日志文件的功能,大致流程是 WEB 后端调用底层方法收集并压缩一些 .log 文件生成一个 zip 压缩包,放在 /tmp 目录下,前端访问指定路径下载。
之前系统环境用的 CentOS 6.5,现在升级到了 CentOS 7,结果测试时发现下载文件下载失败。
awk 的文档写出来可能有一本很厚的书,里面甚至有一种内嵌的解释性编程语言在里面。但是我们普通人就把他当一个小工具,了解一下基础用法就好了,不用深入研究。它的基本功能是将字符串切割之后按照 $1
... $n
来处理,$0
表示整个字符串(整行)。
egrep
= grep -E
fgrep
= grep -F
# -G, --basic-regexp 基本正则, 默认
# -E, --extended-regexp 拓展正则
# -P, --perl-regexp Perl 正则
# -w 完全匹配字词
# -x 完全匹配整行
grep catroll /var/log/auth.log
grep -E catroll /var/log/auth.log
# -F, --fixed-strings
grep -F catroll /var/log/auth.log
tail -1000 /var/log/auth.log | grep -Ev 'gnome-keyring-daemon|CRON'
-r
目录-R
目录,处理软链-v
排除-i
忽略大小写 (ignore-case
)-m
控制匹配次数-a
包含二进制内容的文件当作纯文本处理-I
包含二进制内容的文件跳过
-b
输出命中内容的偏移量
-n
输出行号-o
仅输出匹配部分-h
不输出文件名(匹配多个文件时默认输出文件名 -H
)-L
, --files-without-match
仅输出没有匹配的文件名-l
, --files-with-matches
仅输出匹配文件名-c
, --count
仅输出文件名和匹配行数
--include=GLOB
只查找匹配 GLOB(文件模式)的文件
--exclude=GLOB
跳过匹配 GLOB 的文件--exclude-from=FILE
跳过所有匹配给定文件内容中任意模式的文件--exclude-dir=GLOB
跳过所有匹配 GLOB 的目录
-B
, --before-context=NUM
打印文本及其前面NUM 行
-A
, --after-context=NUM
打印文本及其后面NUM 行-C
, --context=NUM
打印NUM 行输出文本-NUM
等同于 --context=NUMdd if=/dev/zero of=cdata.img bs=1G count=5
mkfs ext4 -F cdata.img
LANG=en fdisk -lu cdata.img
sudo mount -o loop cdata.img /mnt/iso
sudo umount /mnt/iso
总有些时候需要操作一些老旧的 CentOS 版本,如果需要更新就比较麻烦了,因为绝大部分更新源都不对老版本提供服务了。
这时我们只好使用 CentOS Vault,从官方接受这最后的支持,慢慢的下载更新。
用等于号隔开的一组路径,当我们执行一个命令时,会逐个检查这些路径,直到找到一个可以执行的文件。