用户管理
用户和组 UID、GID
- 用户账号唯一标识是UID(User ID):用户账号可以登录操作系统,不同用户类型有不同的权限。
- 用户账号分为root、系统用户、普通用户:
- root的UID是 0。
- 系统用户的UID是 1~999。
- 普通用户的UID默认 1000~60000(
/etc/login.defs
中的UID_MIN
为1000,UID_MAX
为60000)。
- 用户账号分为root、系统用户、普通用户:
- 组账号唯一标识是GID(Group ID):方便管理用户。
- GID从0开始,默认最大60000,与UID无关。
- 组账号分为基本组和附加组:
- 基本组(gid,也叫私有组):组名一般同用户,其GID一般同UID。一个用户必须有且只有一个基本组。
- 附加组(groups,也叫从属组):一个用户可以有多个附加组,也可以没有。
- 一个Linux用户必须至少属于一个组。
id 用户名
(identity):查看用户信息(包括UID、基本组gid、全部的组)。useradd 用户名
:创建该用户。
groupadd 组名
:创建该组账号。
// id
]# id test02
uid=1000(test02) gid=1000(test02) 组=1000(test02) // 基本组默认同用户(名称、UID),没有附加组
账号数据的配置文件
grep 用户名 /etc/passwd
:查看该用户的基本信息。主要与 useradd、usermod、uesrdel 命令有关。
grep 用户名 /etc/shadow
:查看该用户的密码信息。与 passwd 命令有关grep 组名 /etc/group
:查看该组的基本信息。主要与 groupadd、groupdel 命令有关
grep 组名 /etc/gshadow
:查看该组的管理信息(组密码、管理员、组成员)。主要与 gpasswd 命令有关。wc -l /etc/passwd
:统计系统的用户的个数。
wc -l /etc/group
:统计系统的组的个数。
/etc/login.defs
/etc/login.defs
:定义创建用户的默认参数:邮箱、家目录权限、权限掩码、UID、GID、密码相关期限、密码加密算法等等。
/etc/passwd
/etc/passwd
:储存所有用户基本信息的配置文件(一个用户占一行信息)。用户名:密码占位符(x):UID:基本组GID:用户描述信息:家目录:解释器
- 例如:
harry:x:1003:1003::/home/harry:/bin/bash
:
harry 用户名,密码占位符永远是x,第一个1003是UID,第二个1003是基本组gid的GID,::描述信息为空,/home/harry 家目录,/bin/bash 解释器Shell的位置。
- 例如:
- 系统是通过
/etc/passwd
的内容来判断用户的属性,例如:家目录位置。所以可以直接vim /etc/passwd
修改用户属性。 /etc/passwd
是系统级配置文件,不小心删除则使用快照还原,也可以复制系统自带的备份文件/etc/passwd-
。
/etc/shadow
/etc/shadow
:储存所有用户密码信息的配置文件(一个用户占一行信息,只有root能查看)。-
字段1:用户账号的名称。
字段2:密码加密字符串,无密码为!!
。
字段3:上次修改密码的时间,从1970-1-1起计的天数。
字段4:两次修改密码的最小间隔天数,默认0。
字段5:两次修改密码的最大间隔天数,默认99999。
字段6:密码过期前的警告天数,默认7。
字段7:密码过期后多少天禁用此用户账号。
字段8:账号失效时间,默认值为空。
字段9:保留字段(未使用)。- 例如:
nsd19:!!:19513:0:99999:7:::
:
用户名 nsd19,无密码,上次修改密码时间是1970-1-1加19513天。
- 例如:
-
字段2:例如:
$6$GLPn7waVEHIlDuoZ$pYzNs5tKEMTnRT5sDX9bNu3YwxYetJGd1des3MNEsKrql2SdT.Qj8oRQBlT6UEzLN2go0pfrxdg9uz7lZwahR1
- 第一和第二个
$
之间:6
:代表采用SHA-512算法。 - 第二和第三个
$
之间:GLPn7waVEHIlDuoZ
:为sault随机字符串。 - 第三个
$
之后:pYzNs5tKEMTnRT5sDX9bNu3YwxYetJGd1des3MNEsKrql2SdT.Qj8oRQBlT6UEzLN2go0pfrxdg9uz7lZwahR1
:密码加sault之后的加密值。
- 第一和第二个
-
使用
chage 用户名
修改
-
/etc/group
/etc/group
:储存所有组的基本信息的配置文件(一个组占一行信息)。组名:组密码占位符(x):组账号的GID:组成员名单
,组成员名单不会显示自身用户。- 例如:
wudang:x:1005:root,zhangsan
:组名wudang,GID号1005,组成员有root、zhangsan。
/etc/gshadow
/etc/gshadow
:储存所有组的管理信息的配置文件(一个组占一行信息)。组名:组密码加密字符串(!):组管理员名单:组成员名单
,无组密码时的组密码加密字符串为!
。
/etc/skel
/etc/skel
(skeleton):家目录的源头。- 每创建一个用户,都会从这个目录复制一份作为家目录。
/etc/skel
下有三个隐藏文件.bash_logout
、.bash_profile
、.bashrc
。用户家目录/.bash_profile
,可设置TMOUT=秒数
(该用户指定秒数无操作则自动断开终端)用户家目录/.bashrc
,可设置alias 别名='字符串'
(该用户的永久定义别名)
bashrc 别名配置文件
用户的家目录/.bashrc
:只能该用户使用的永久定义别名的配置文件,新终端生效。/etc/bashrc
:全局所有用户可使用的永久定义别名的配置文件,新终端生效。- 如果全局和家目录的bashrc配置文件定义了同名的别名,在家目录的bashrc配置文件中:家目录的定义写在if语句之前,全局别名优先;写在if语句之后,家目录别名优先。因为if语句运行
/etc/bashrc
,写在后面的别名会覆盖前面的同名别名。- bash配置文件的编写方式和浏览方式同vim。
- 编写内容:
alias 别名='字符串'
(注意"别名
"、“=
”、“'字符串'
” 三者之间没有空格。)
/etc/login.defs
]# less /etc/login.defs // 对新建用户生效
15 MAIL_DIR /var/spool/mail
25 UMASK 022
26
27 # HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
28 # home directories.
29 # If HOME_MODE is not set, the value of UMASK is used to create the mode.
30 HOME_MODE 0700
31
32 # Password aging controls:
33 #
34 # PASS_MAX_DAYS Maximum number of days a password may be used.
35 # PASS_MIN_DAYS Minimum number of days allowed between password changes.
36 # PASS_MIN_LEN Minimum acceptable password length.
37 # PASS_WARN_AGE Number of days warning given before a password expires.
38 #
39 PASS_MAX_DAYS 99999
40 PASS_MIN_DAYS 0
41 PASS_MIN_LEN 5
42 PASS_WARN_AGE 7
43
44 #
45 # Min/max values for automatic uid selection in useradd
46 #
47 UID_MIN 1000
48 UID_MAX 60000
49 # System accounts
50 SYS_UID_MIN 201
51 SYS_UID_MAX 999
52
53 #
54 # Min/max values for automatic gid selection in groupadd
55 #
56 GID_MIN 1000
57 GID_MAX 60000
58 # System accounts
59 SYS_GID_MIN 201
60 SYS_GID_MAX 999
69 #
70 # If useradd should create home directories for users by default
71 # On RH systems, we do. This option is overridden with the -m flag on
72 # useradd command line.
73 #
74 CREATE_HOME yes
75
76 # This enables userdel to remove user groups if no members exist.
77 #
78 USERGROUPS_ENAB yes
79
80 # Use SHA512 to encrypt password.
81 ENCRYPT_METHOD SHA512 // 密码加密方式SHA512,以前是MD5
用户账号管理
创建用户 useradd
useradd 用户名
:创建该用户。useradd -u 数字 用户名
(UID):创建指定UID为该数字的用户。- 下一个新建用户的UID从该数字起计。UID达60000会开始使用前面空闲的UID。
useradd -d 目标目录路径 用户名
(directory):创建用户并指定家目录为该目标目录。- 用户的家目录默认为
/home/用户名
。可以存在用户没有家目录。 - 注意:需要该目标目录是不存在的,且已存在父目录。
-
如果目标目录父目录不存在,也会创建该用户。使用
/grep 用户名 /etc/passwd
会发现家目录是目标目录,但实际不存在。 -
如果目标目录已存在,也会创建该用户。
-
- 用户的家目录默认为
useradd -g 组名或GID 用户名
(gid):创建用户并指定基本组为该组。
useradd -G 组名1,组名n 用户名
(groups):创建用户并指定附加组为组1和组n。useradd -s 解释器 用户名
(Shell):创建用户并指定登录解释器为该解释器。- 用户的登录解释器一般为:
/bin/bash
。 /sbin/nologin
:该解释器用于禁止用户登录操作系统。
useradd -s /sbin/nologin 用户名
:创建用户并禁止其登陆操作系统。冻结操作比较少用于创建useradd,多用于修改usermod。
- 用户的登录解释器一般为:
useradd -M 用户名
:创建用户但不创建家目录。
// useradd -u、-d (系统原有普通用户test02)
]# useradd nsd01
]# useradd -u 1012 nsd002 // 选项-u指定UID
]# useradd -d /opt/test003 nsd003 // 选项-d指定家目录,需要目标目录不存在且存在父目录
]# grep nsd /etc/passwd
nsd001:x:1001:1001::/home/nsd001:/bin/bash
nsd002:x:1012:1012::/home/nsd001:/bin/bash
nsd003:x:1013:1013::/opt/test003:/bin/bash
]# ls /home
nsd001 nsd002 test02
// useradd -d的两种情况:父目录不存在;目标目录已存在,但还是有创建用户
]# useradd -d /opt/new/test004 nsd004 // 父目录不存在
useradd: 无法创建目录 /opt/new/test004
]# mkdir /opt/test005
]# useradd -d /opt/test005 nsd005 // 目标目录已存在
useradd: 警告: 此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
]# grep nsd /etc/passwd
nsd001:x:1001:1001::/home/nsd001:/bin/bash
nsd002:x:1012:1012::/home/nsd001:/bin/bash
nsd003:x:1013:1013::/opt/test003:/bin/bash
nsd004:x:1014:1014::/opt/new/test004:/bin/bash // 但还是有创建用户
nsd005:x:1015:1015::/opt/test005:/bin/bash // 但还是有创建用户
]# ls /home
nsd001 nsd002 test02
]# ls /opt // 没有创建不存在的父目录/opt/new,nsd004没有家目录/opt/new/test004
test003 test005
]# ls -A /opt/test003 // 正常创建的家目录会从skel目录复制一份
.bash_logout .bash_profile .bashrc .mozilla
]# ls -A /opt/test005 // 没有覆盖已存在的目标目录,nsd005没有家目录
// useradd -g、-G
]# id nsd001 // 查看用户nsd001基本信息
uid=1001(nsd001) gid=1001(nsd001) 组=1001(nsd001) // gid是基本组的GID号默认和UID号一致,除非该号已被使用就顺延
]# groupadd group001 // 创建组group001,上一个组nsd005的gid是1015,所以顺延占用GID号1016
]# useradd -G group001 nsd006 // 选项-G指定附加组
]# id nsd006
uid=1016(nsd006) gid=1017(nsd006) 组=1017(nsd1006),1016(group001) // gid顺延占用1017,用户隶属两个组
]# groupadd group002 // 创建组group002,顺延占用GID号1018
]# useradd -g group002 nsd007 // 选项-g指定基本组(组名)
]# id nsd007
uid=1017(nsd007) gid=1018(group002) 组=1018(group002)
]# useradd -g 1018 nsd007 // 选项-g指定基本组(GID)
]# id nsd008
uid=1018(nsd008) gid=1018(group002) 组=1018(group002)
]# useradd -G group001,group002 nsd009 // 选项-G指定附加组
]# id nsd009
uid=1019(nsd009) gid=1019(nsd009) 组=1019(nsd1009),1016(group001),1018(group002) // 用户隶属三个组
修改用户信息 usermod
-
usermod -l 新用户名 用户名
(modify,login):修改该用户的名称为新用户名。 -
usermod -u 数字 用户名
(UID):修改该用户的UID为该数字。 -
usermod -d 目标目录 用户名
(directory):修改该用户的家目录为目标目录(没有实际创建该家目录)。- 只是修改了
/etc/passwd
中的家目录信息,但没有创建该目录,原先的家目录依旧存在。 usermod -md 目标目录 用户名
(move):修改并移动该用户的家目录为目标目录。- 注意:需要该目标目录是不存在的,且已存在父目录。
- 只是修改了
-
usermod -G 组名1,组名n 用户名
(groups):重置该用户的附加组为组1和组n。
usermod -g 组名 用户名
(gid):重置该用户的基本组为该组。 -
usermod -s 解释器 用户名
(shell):修改该用户登录系统的解释器为该解释器。/sbin/nologin
:该解释器用于禁止用户登录操作系统。
// usermod -l、-u
]# useradd nsd101 // 创建用户nsd101
]# id nsd101
uid=1021(nsd101) gid=1021(nsd101) 组=1021(nsd101)
]# usermod -l nsd102 nsd101 // 选项-l修改用户名
]# usermod -u 2102 nsd102 // 选项-u修改用户UID
]# id nsd102
uid=2102(nsd102) gid=1021(nsd101) 组=1021(nsd101)
// usermod -d、-md (系统原有普通用户test02)
]# grep nsd102 /etc/passwd
nsd102:x:2102:1021::/home/nsd101:/bin/bash // 用户nsd102(原nsd101)的家目录/home/nsd101
]# ls /home
test02 nsd101
]# ls -a /opt
. ..
]# usermod -d /opt/nsd102 nsd102 // usermod -d 修改家目录,实际是修改/etc/passwd文件
]# grep nsd102 /etc/passwd // 查看/etc/passwd文件
nsd102:x:2102:1021::/opt/nsd102:/bin/bash // /etc/passwd中用户nsd102家目录已改为/opt/nsd102
]# ls /home
test02 nsd101 // 原先的家目录/home/nsd101还在
]# ls -a /opt
. .. // 没有实际创建新的家目录/opt/nsd102
]# usermod -md /opt/nsd202 nsd102 // usermod -md 既改/etc/passwd文件,又移动并重命名家目录
]# grep nsd102 /etc/passwd
nsd102:x:2102:1021::/opt/nsd202:/bin/bash // /etc/passwd中用户nsd102家目录已改为/opt/nsd202
]# ls /home
test02 // 原先的家目录/home/nsd101已经不存在
]# ls -a /opt
. .. nsd202 // 生成新的家目录/opt/nsd202
// usermod -G
]# id nsd102
uid=2102(nsd102) gid=1021(nsd101) 组=1021(nsd101)
]# groupadd group003
]# groupadd group004
]# usermod -G group003,group004 nsd102 // 选项-G重置附加组:从无到有
]# id nsd102
uid=2102(nsd102) gid=1021(nsd101) 组=1021(nsd101),1022(group003),1023(group004)
]# groupadd group005
]# groupadd group006
]# usermod -G group005,group006 nsd102 // 选项-G重置附加组:从有到有
]# id nsd102
uid=2102(nsd102) gid=1021(nsd101) 组=1021(nsd101),1024(group005),1025(group006)
// usermod -s
]# grep nsd102 /etc/passwd
nsd102:x:2102:1021::/opt/nsd202:/bin/bash
]# usermod -s /sbin/nologin nsd102 // 选项-s修改登陆解释器Shell
]# grep nsd102 /etc/passwd
nsd102:x:2102:1021::/opt/nsd202:/sbin/nologin
设置用户密码 passwd
- 系统登陆界面:没有密码的用户不能登录系统,但可以在终端切换。
su - 用户名
(switch user):快速切换用户。
exit
或Ctrl+D
:注销(退出)当前用户。- 交互式设置密码:
passwd [选项] 用户名
:修改该用户的密码。(不会显示密码,root使用该命令可以无视密码的限制且是重置密码)passwd [选项]
:修改当前用户的密码。(需要记得旧密码,且新密码符合密码复杂度,忘记旧密码则切换root重置密码)- 选项:
-l
(lock):锁定用户密码(仅root能使用),用户使用正确的密码也无法登录。-u
(unlock):解锁用户密码(仅root能使用)-S
(status):查看用户密码是否被锁定。-d
(delete):清除用户密码。
stty -echo
(set tty):屏蔽回显。(但不会屏蔽提示信息)
stty echo
:恢复回显。
- 选项:
- 非交互式设置密码(只能root操作):
echo 密码 | passwd --stdin 用户名
(standard input):从标准输入获取密码来修改该用户密码。passwd --stdin 用户名 <<< 密码
- chage 命令查看或修改
/etc/passwd
的信息:chage -l 用户名
(list):查看信息。chage 用户名
:修改信息。
// passwd非交互式设置密码
]# echo 123 | passwd --stdin test02
更改用户 test02 的密码。
passwd: 所有的身份验证令牌已经成功更新。
// 锁定用户密码(仅root能操作)
]# passwd -l tom
Locking password for user tom.
passwd: Success
]# passwd -S tom
tom LK 2023-08-01 1 30 2 3 (Password locked.)
// 解锁用户密码(仅root能操作)
]# passwd -u tom
Unlocking password for user tom.
passwd: Success
]# passwd -S tom
tom PS 2023-08-01 1 30 2 3 (Password set, SHA512 crypt.)
删除用户 userdel
userdel 用户名
:删除用户信息(不会删除家目录和邮件)。
userdel -r 用户名
(remove):删除用户信息以及家目录和邮件。
// userdel
]# useradd nsd01
]# useradd nsd02
]# ls /home // 查看用户家目录
nsd01 nsd02
]# ls /var/spool/mail
nsd01 nsd02
]# userdel nsd01 // 删除用户,不会删除家目录和邮件
]# userdel -r nsd02 // 选项-r删除用户以及家目录和邮件
]# id nsd01
id: "nsd01": 无此用户
]# id nsd02
id: "nsd02": 无此用户
]# ls /home
nsd01 // 只有nsd02家目录被删除
]# ls /var/spool/mail
nsd01 // 只有nsd02邮件被删除
组账号管理
创建组 groupadd
groupadd 组名
:创建该组。- 选项
-g
:指定该组gid。
- 选项
管理组 gpasswd
-
gpasswd 组名
:交互式设置该组的密码。(一般不设置组密码) -
gpasswd -a 用户名 组名
:将该用户添加进该组(一次添加一个)。 -
gpasswd -d 用户名 组名
:将该用户从该组删除(一次删除一个)。 -
gpasswd -M '用户名1,用户名2,用户名n' 组名
(member):重置该组的成员名单(成员名单可为空)。
gpasswd -M '' 组名
:清空该组的成员名单。 -
gpasswd -A 用户名 组名
(administrators):重置该组的管理员是该用户(可以不是组成员),管理员可以使用选项-a
和-d
。
gpasswd -A '用户名1,用户名2,用户名n' 组名
:重置该组的管理员名单(可以不是组成员),管理员可以使用选项-a
和-d
。
gpasswd -A '' 组名
:清空该组的管理员名单。
// gpasswd
]# useradd kaka
]# useradd nb
]# useradd jack
]# useradd kenji
]# groupadd tarena // 创建组
]# grep tarena /etc/group
tarena:x:1005:
// gpasswd 组成员
]# gpasswd -a kaka tarena // 选项-a增加单个成员
]# grep tarena /etc/group
tarena:x:1005:kaka
]# id kaka
uid=1002(kaka) gid=1002(kaka) 组=1002(kaka),1005(tarena)
]# gpasswd -a nb tarena // 选项-a增加单个成员
]# grep tarena /etc/group
tarena:x:1005:kaka,nb
]# gpasswd -M 'jack,kenji' tarena // 选项-M重置成员列表
]# grep tarena /etc/group
tarena:x:1005:jack,kenji
]# gpasswd -a nb tarena
]# grep tarena /etc/group
tarena:x:1005:jack,kenji,nb
]# gpasswd -d nb tarena // 选项-d删除单个成员
]# grep tarena /etc/group
tarena:x:1005:jack,kenji
]# gpasswd -M '' tarena // 选项-M重置成员列表,成员列表可为空
]# grep tarena /etc/group
tarena:x:1005:
// gpasswd 组管理员,可以不是组成员
]# gpasswd -A nb tarena // 选项-A重置管理员列表
]# grep tarena /etc/gshadow
tarena:!:nb:
// 组名:密码加密字符串:组的管理员列表:组成员列表
]# gpasswd -A 'nb,kenji' tarena // 选项-A重置管理员列表
]# grep tarena /etc/gshadow
tarena:!:nb,kenji:
]# gpasswd -A '' tarena // 选项-A清空管理员列表
]# grep tarena /etc/gshadow
tarena:!::
删除组 groupdel
groupdel 组名
:删除该组(不能是用户的基本组)。
// groupdel
]# grep group003 /etc/group
group003:x:1022:
]# groupdel group003
]# grep group003 /etc/group
账号管理的总结
-
创建一个用户:
/etc/passwd
、/etc/shadow
、/etc/group
、/etc/gshadow
均会增加一行信息。 -
创建一个组:
/etc/group
、/etc/gshadow
均会增加一行信息。 -
总结:Linux系统执行
useradd
命令,会完成那些操作?1.会在/etc/passwd增加一行信息
2.会在/etc/shadow增加一行信息
3.会在/home新增用户家目录
4.会在/var/spool/mail增加用户邮件文件
5.会在/etc/group增加一行组信息
6.会在/etc/gshadow增加一行组的管理信息 -
总结:Linux系统执行
userdel -r
命令,会完成那些操作?1.会在/etc/passwd删除一行信息
2.会在/etc/shadow删除一行信息
3.会在/home删除用户家目录
4.会在/var/spool/mail删除用户邮件文件
5.会在/etc/group删除一行组信息
6.会在/etc/gshadow删除一行组的管理信息
邮件收发 mail
-
提供邮件功能的软件:
postfix
提供mail命令的软件:mailx
-
/var/spool/mail/用户名
:储存该用户的所有邮件信息的文件。删除该文件则清空用户所有邮件,创建用户时默认产生,删除用户时默认不删除。 -
mail命令:
mail -s '主题字符串' -r 发件用户名@发件地址 收件用户名@收件地址
(subject、address):交互式发邮件。发件地址和收件地址是主机名,省略则默认当前主机名。在空行写.
后回车,表示提交邮件。echo '邮件内容' | mail -s '主题字符串' -r 发件用户名@发件地址 收件用户名@收件地址
:非交互式发邮件。mail -u 用户名
(user):查看该用户接收的所有邮件。N
表示新邮件,输入数字查看对应邮件的信息,输入exit
退出邮件。mail
:进入当前用户的邮箱。进入后可以使用命令mail
交互式发邮件。使用?
查看邮箱内的帮助。
// 邮件
虚拟机B(192.168.88.2,主机名pc2.tedu.cn):
]# useradd yg
]# useradd xln
]# yum install -y postfix mailx // 提供邮件功能的软件postfix、提供mail命令的软件mailx
]# systemctl restart postfix.service // 开启postfix服务
// 交互式发邮件
]# mail -s 'test01' -r yg@test xln // 邮件主题test01,发件人yg@test,收件人xln@pc2.tedu.cn
testmail // 邮件内容
. // 空行写入'.'表示提交邮件
EOT
]# mail -u xln // 查看xln接收的所有邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 1 message 1 new
>N 1 yg@test Fri Jun 16 17:16 18/495 "test01"
& 1 // 输入数字查看对应的邮件的信息
Message 1:
From yg@test Fri Jun 16 17:16:40 2023
Return-Path: <yg@test>
X-Original-To: xln
Delivered-To: xln@pc2.tedu.cn
Date: Fri, 16 Jun 2023 17:16:40 +0800
From: yg@test // 发件人yg@test
To: xln@pc2.tedu.cn // 收件人xln@pc2.tedu.cn
Subject: test01 // 邮件主题test01
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: R
testmail // 邮件内容
& exit // 输入exit退出邮件
// 非交互式发邮件
]# echo 'testmail second' | mail -s test02 -r yg@sad xln@sad // 邮件地址xln@sad,本机xln@pc2.tedu.cn不会新增收件
]# mail -u xln
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 1 message 1 new
>N 1 yg@test Fri Jun 16 17:16 18/495 "test01"
& exit
]# echo 'testmail third' | mail -s test03 -r yg@pc2.tedu.cn xln@pc2.tedu.cn
]# mail -u yg
No mail for yg
]# mail -u xln
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 2 messages 2 new
>N 1 yg@test Fri Jun 16 17:16 18/495 "test01"
N 2 yg@pc2.tedu.cn Fri Jun 16 17:22 18/541 "test03"
& 2
Message 2:
From yg@pc2.tedu.cn Fri Jun 16 17:22:55 2023
Return-Path: <yg@pc2.tedu.cn>
X-Original-To: xln@pc2.tedu.cn
Delivered-To: xln@pc2.tedu.cn
Date: Fri, 16 Jun 2023 17:22:54 +0800
From: yg@pc2.tedu.cn // 发件人yg@pc2.tedu.cn
To: xln@pc2.tedu.cn // 收件人xln@pc2.tedu.cn
Subject: test03 // 邮件主题test03
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: R
testmail third // 邮件内容
& exit
计划任务 crotab
-
计划任务(周期性任务):按照设置的时间间隔,为用户反复执行某一项固定的系统任务。
- crontab命令的软件:
cronie
、crontabs
- crontab命令的服务:
crond.service
- 计划任务日志文件:
/var/log/cron
- 计划任务文件:
/var/spool/cron/用户名
- crontab命令的软件:
-
开机状态下才会执行计划任务。
-
crontab命令:
crontab -e [-u 用户名]
(cron table,edit):编辑计划任务(用法同vim)。crontab -l [-u 用户名]
(list):查看计划任务。crontab -l -u 用户名
=cat /var/spool/cron/用户名
crontab -r [-u 用户名]
(remove):清除计划任务。- 省略用户名则默认当前用户。
-
计划任务的书写格式:
分 时 日 月 周 执行命令
- 编写计划任务时,执行命令尽量写可执行程序的绝对路径(通过
which 命令
查询)。 - 时间通配符:分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7)
*
:匹配范围内任意时间。
,
:分隔多个不连续的时间点。
-
:指定连续时间范围。
范围/数字
:指定范围内时间频率(每)。- 例如:
30 8 * * *
表示每天8:30执行一次。
30 0 * * 5
表示每周五0:30执行一次。
30 0 * * 1,3,5
表示每周一三五0:30执行一次。
30 0 * * 1-5
表示每周一至周五0:30执行一次。
*/5 * * * *
表示每隔5分钟执行一次。
* * * * *
表示每分钟执行一次。
30 23 1 * 6
:表示每个月1号或每个周六的23:30执行一次。
- 编写计划任务时,执行命令尽量写可执行程序的绝对路径(通过
// crontab
]# date
2023年 07月 04日 星期二 20:50:32 CST
]# date >> /opt/time.txt
]# cat /opt/time.txt
2023年 07月 04日 星期二 20:50:41 CST
]# which date // 查询命令可执行程序路径
/usr/bin/date
]# crontab -e // 为当前用户root编写计划任务
* * * * * /usr/bin/date >> /opt/time.txt // 每分钟将date命令输出内容追加到/opt/time.txt
]# crontab -l // 查看当前用户root的计划任务内容,即查看文件/var/spool/cron/用户名
* * * * * /usr/bin/date >> /opt/time.txt
]# cat /var/spool/cron/root // 储存root用户计划任务的文件
* * * * * /usr/bin/date >> /opt/time.txt
]# cat /opt/time.txt
……省略一万字
// 为deny创建计划任务,每周五的6-12点之间每隔2小时执行一次echo hi
]# which echo
/usr/bin/echo
]# crontab -e -u deny
01 6-12/2 * * 5 /usr/bin/echo hi