第 1 优先级
全局范围的变量(例如:执行临时命令时指定的变量)
第 2 优先级
Playbook 里的变量。
第 3 优先级
主机范围里的变量(例如:清单中的服务器或服务器组)
(补充:清单中的服务器优先级高于清单中的服务器组)
全局范围的变量(例如:执行临时命令时指定的变量)
Playbook 里的变量。
主机范围里的变量(例如:清单中的服务器或服务器组)
(补充:清单中的服务器优先级高于清单中的服务器组)
如果 Umask 的值是 0022:
创建的新目录的默认权限是:777 – 022 = 755
创建的新文件的默认权限是:666 – 022 = 644
# umask
0022
# umask 0002
# umask -S u=rwx,g=rwx,o=rw
# su - root
(补充:这里以切换到 root 用户为例)
# vim ~/.bashrc
添加以下内容:
......
umask 022
(补充:这里以将 Umask 设置为 022 为例)
# source ~/.bashrc
# vim /etc/login.defs
将以下内容:
UMASK ......
修改为:
UMASK 022
(补充:这里以将 Umask 的默认值设置为 022 为例)
# vim /etc/profile
将以下内容:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask ......
else
umask ......
fi
......
修改为:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
......
(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)
(注意:openSUSE & SLES 的 /etc/profile 配置文件里没有这些内容,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建这些内容)
或者:
# vim /etc/profile
添加以下内容:
......
umask 022
(补充:这里以将所有用户的全局 Umask 设置为 022 为例)
# vim /etc/bashrc
将以下内容:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask ......
else
umask ......
fi
......
修改为:
......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
......
(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)
(注意: openSUSE & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件和这些内容)
或者:
# vim /etc/bashrc
添加以下内容:
......
umask 022
(补充:这里以将所有用户的全局 Umask 设置为 022 为例)
(注意: openSUSE & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件)
# source /etc/bashrc ; source /etc/profile
(
注意:
1) 当永久设置的 Umask 生效后,用户必须要重新登录后才会刷新 Umask
2) 当 /etc/login.defs 配置文件、/etc/bashrc 配置文件和 /etc/profile 配置文件里设置的 Umask 值不一致时,会以 /etc/profile 文件里设置的为准
3) 当同一个文件里设置了多个 Umask 个值时,会以最后一个值为准
)
-a 或者 –all 显示所有设备
-b 或者 –bytes 以字节为单位而非易读的格式来显示 SIZE
-d 或者 –nodeps 不显示从属设备(slave)或占位设备(holder)
-D 或者 –discard 显示时丢弃能力
-z 或者 –zoned print zone model
-e 或者 –exclude <列表> 根据主设备号排除设备(默认:内存盘)
-f 或者 –fs 输出文件系统信息
-i 或者 –ascii 只使用 ascii 字符
-I 或者 –include <列表> 只显示有指定主设备号的设备
-J 或者 –json 使用 JSON 输出格式
-l 或者 –list 使用列表格式的输出
-T 或者 –tree use tree format output
-m 或者 –perms 输出权限信息
-n 或者 –noheadings 不显示标题
-o 或者 –output <列表> 输出列
-O 或者 –output-all 输出所有列
-p 或者 –paths 显示完整设备路径
-P 或者 –pairs 使用 key=“value” 输出格式
-r 或者 –raw 使用原生输出格式
-s 或者 –inverse 反向依赖
-S 或者 –scsi 输出有关 SCSI 设备的信息
-t 或者 –topology 输出拓扑信息
-x 或者 –sort <列> 按<列>对输出排序
–sysroot <dir> 使用指定目录当作根 “/” 目录
-h 或者 –help 显示帮助
-V 或者 –version 显示版本
# lsblk
# lsblk -f
或者:
# lsblk --fs
ext2
ext3
ext4
xfs
minix
cramfs
# mkfs.xfs /dev/vdb
或者:
# mkfs -t xfs /dev/vdb
(补充:这里以将 /dev/vdb 格式化为 xfs 格式为例)
1) -eq 或者 ==,若两个数值存在且相等,则结果为真
2) -ne 或者 !=,若两个数值存在且不相等,则结果为真
3) -gt 或者 >,若两个数值存在且前一个数值大于后一个数值,则结果为真
4) -lt 或者 <,若两个数值存在且前一个数值小于后一个数值,则结果为真
5) -ge 或者 >=,若两个数值存在且前一个数值大于或等于后一个数值,则结果为真
6) -le 或者 <=,若两个数值存在且前一个数值小于或等于后一个数值,则结果为真
1) -z,如果字符串为空值,则结果为真
2) -n,如果字符串不为空值,则结果为真
3) == 或者 =,若两个字符串存在且一样,则结果为真
4) !=,若两个字符串存在且不一样,则结果为真
5) >,若两个字符串存在且前一个字符串大于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
6) <,若两个字符串存在且前一个字符串小于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
7) >,若两个字符串存在且前一个字符串的 ASCII 码大于后一个字符串的 ASCII 码(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
8) \<,若两个字符串存在且前一个字符串的 ASCII 码大于后一个字符串的 ASCII 码(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
1) -e,若文件或目录或链接存在,则结果为真
2) -d,若目录存在,则结果为真
3) -f,若文件存在,则结果为真
4) -L,若链接存在,则结果为真
5) -b,若块文件存在,则结果为真
6) -c,若字符型特殊文件存在,则结果为真
7) -s,若文件存在且里面有内容,则结果为真
8) -r,若文件且可读,则结果为真
9) -w,若文件且可写,则结果为真
10) -x,若文件且可执行,则结果为真
11) -nt,若两个文件存在且前一个文件比后一个文件新,则结果为真
12) -ot,若两个文件存在且前一个文件比后一个文件新,则结果为真
1) -a,和
2) -o,或
3) !,非
# [ 0 -ne 1 ]
# echo $?
0
(补充:这里以测试数字 0 是否不等于数字 1 为例)
# [ a == a ]
# echo $?
0
(补充:这里以测试字符串 a 是否等于字符串 a 为例)
# [ -f test.txt ]
# echo $?
0
(补充:这里以测试文件 test.txt 是否存在为例)
# a=1
# [ $a == 1 ]
# echo $?
0
(补充:这里以测试变量 a 是否等于数字 1 为例)
# a=1
# b=2
# c=1
# [ $a == $c -a $b == 2 ]
# echo $?
0
(补充:这里以测试变量 a 是否等于变量 c 并且变量 b 是否等于数字 2 为例)
# [ "`ls /tmp`" != "" ]
# echo $?
# 0
(补充:这里以测试 ls /tmp 命令的运行结果是否存在为例)
Variable=EternalCenter
# [ `echo $Variable | tr 'a-z' 'A-Z'` = "ETERNALCENTER" ]
# echo $?
# 0
(补充:这里以把 EternalCenter 转换成全部大写后再和 ETERNALCENTER 进行比较的案例)