接续第4章部分内容
while条件循环语句
--是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环

[root@linuxprobe ~]# vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ] ; then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0
elif [ $INT -gt $PRICE ] ; then
echo "太高了!"
else
echo "太低了!"
fi
done
$RANDOM变量
--来调取出一个随机的数值(范围为0~32767)
expr命令
--用于判断用户输入的数值是等于,大于还是小于,并取得数值
let TIMES++
--当每次循环到let TIMES++命令时都会让TIMES变量内的数值加1
case条件测试语句

[root@linuxprobe ~]# vim Checkkeys.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z]) ( 逻辑“或” |,固定格式,Shell脚本中的逻辑“或”不同 )
echo "您输入的是 字母。"
;; ( 双分号结束 )
[0-9])
echo "您输入的是 数字。"
;;
*) ( 兜底 )
echo "您输入的是 空格、功能键或其他控制字符。"
esac
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:6
您输入的是 数字。
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:p
您输入的是 字母。
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:^[[15~
您输入的是 空格、功能键或其他控制字符。
计划任务服务程序
一次性计划任务 at
--格式:at 时间
at -l 列出已有的计划任务
at -c 编码 显示具体的工作内容
at -r 编码 删除某个计划任务
atrm 编码 删除某个计划任务
ctrl+D 结束编写计划任务
周期性计划任务 crond

crond 服务名称
crontab 配置工具
crontab -e 创建、编辑计划任务命令
crontab -l 查看当前计划任务命令
crontab -r 删除某条计划任务命令
crontab -u 编辑他人的计划任务命令
crond 口诀"分、时、日、月、星期 命令"这是使用crond服务设置任务的参数格式,
如果某些字段没有设置需要用星号( * )占位
字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本
--e.g
* * * * * /usr/sbin/reboot
30 1 5 3 * /usr/sbin/reboot 每年3月5日1点30分重启
20 2 1-3 * * /usr/sbin/reboot 每月1-3日2点20分重启
30 */2 4 * * /usr/sbin/reboot 每年4月每天每隔2小时30分进行重启
=============================================我·是·分·割·线=============================================
第5章 用户身份与文件权限
用户身份与能力
--RHEL 7 系统中,用户分为以下几种:
--用户的UID具有唯一性
管理员 uid:0 root
系统用户 uid:1-999 RHEL5/6 1-499(系统用户)
普通用户 uid:1000-无穷 RHEL5/6 500-65535(普通用户)
--用户组号码(GID, Group IDentification ),同一用户组可以添加多个用户
--Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组
useradd命令
--用于创建新用户,格式:“useradd [选项] 用户名”
--创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash , 而且默认会创建一个与该用户同名的基本用户组
参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器
--e.g
下面我们创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中:
[root@linuxprobe ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)
groupadd命令
--用于创建用户组,格式:“groupadd [选项] 群组名”
--e.g
[root@linuxprobe ~]# groupadd ronny
usermod命令
--用于修改用户的属性,格式为“usermod [选项] 用户名”
--用户的信息保存在/etc/passwd文件中
参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组 (基本用户组)
-G 变更扩展用户组 (扩展用户组)
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID
--e.g
我们先来看一下账户linuxprobe的默认信息:
[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
然后将用户linuxprobe加入到root用户组中,这样扩展组列表中则会出现root用户组的字样,而基本组不会受到影响:
[root@linuxprobe ~]# usermod -G root linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
再来试试用-u参数修改linuxprobe用户的UID号码值。除此之外,我们还可以用-g参数修改用户的基本组ID,用-G参数修改用户扩展组ID。
[root@linuxprobe ~]# usermod -u 8888 linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
passwd命令
--用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
--e.g
[root@linuxprobe ~]# passwd
Changing password for user root.
New password:此处输入密码值
Retype new password: 再次输入进行确认
passwd: all authentication tokens updated successfully.
[root@linuxprobe ~]# passwd linuxprobe
Changing password for user linuxprobe.
New password:此处输入密码值
Retype new password: 再次输入进行确认
passwd: all authentication tokens updated successfully.
--e.g
可以使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦:
[root@linuxprobe ~]# passwd -l linuxprobe
Locking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe LK 2017-12-26 0 99999 7 -1 (Password locked.)
[root@linuxprobe ~]# passwd -u linuxprobe
Unlocking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1 (Password set, SHA512 crypt.)
userdel命令
--用于删除用户,格式为“userdel [选项] 用户名”
参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录
--e.g
下面使用userdel命令将linuxprobe用户删除,其操作如下:
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
[root@linuxprobe ~]# userdel -r linuxprobe
[root@linuxprobe ~]# id linuxprobe
id: linuxprobe: no such user
文件权限与归属
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件

--e.g
数字权限 文件权限
764 rwxrw-r--
642 rw-r---w-
153 --xr-x-wx
731 rwx-wx--x

复习:第4章
预习:28日第5章,29日第6章,3月1日第7章
来源:oschina
链接:https://my.oschina.net/190211/blog/3170985