# 用户相关

用户管理

用户和组 UID、GID

  • 用户账号唯一标识是UID(User ID):用户账号可以登录操作系统,不同用户类型有不同的权限。
    • 用户账号分为root、系统用户、普通用户:
      • root的UID是 0。
      • 系统用户的UID是 1~999。
      • 普通用户的UID默认 1000~60000(/etc/login.defs中的UID_MIN为1000,UID_MAX为60000)。
  • 组账号唯一标识是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):快速切换用户。
    exitCtrl+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交互式发邮件。使用?查看邮箱内的帮助。
// 邮件
虚拟机B192.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命令的软件:croniecrontabs
    • crontab命令的服务:crond.service
    • 计划任务日志文件:/var/log/cron
    • 计划任务文件:/var/spool/cron/用户名
  • 开机状态下才会执行计划任务。

  • 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      
	20230704日 星期二 20:50:32 CST                  
]# date >> /opt/time.txt  
]# cat /opt/time.txt  
	20230704日 星期二 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

end

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值