“初识Linux:任务调度”的版本间差异

来自Wikioe
跳到导航 跳到搜索
第523行: 第523行:


== 服务 ==
== 服务 ==
已安装服务的启停操作:
<syntaxhighlight lang="bash">
# 查看xxx服务状态
service xxx status
# 启动xxx服务
service xxx start
# 停止xxx服务
service xxx stop
# 重启xxx服务
service xxx restart
</syntaxhighlight>
* “service xxx start”等效于
*# /etc/init.d/xxx start
*# /etc/rd.d/init.d/xxx start
*# systemctl start xxx.service
=== service 与 systemctl ===
==== service ====
service命令其实是去/etc/init.d目录下,去执行相关程序。长期以来 Linux 的启动一直采用init进程,这种方法有两个缺点:
# 启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
# 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
==== systemctl ====
systemctl是 Systemd 的主命令,用于管理系统。<br/>
Systemd 是 Linux 系统工具,用来启动守护进程(Systemd 中的 d,即守护进程 daemon),能够快速并发地启动进程。<br/>
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。(参见[http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 阮一峰《Systemd 入门教程:命令篇》])
* 使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
* systemctl 兼容了 service、chkconfig命令,如:
*: <syntaxhighlight lang="bash">
# 管理服务的启动、重启、停止、重载、查看
service foo start systemctl start foo.service 启动服务
service foo restart systemctl restart foo.service 重启服务
service foo stop systemctl stop foo.service 停止服务
service foo reload systemctl reload foo.service 重新加载配置文件(不终止服务)
service foo status systemctl status foo.service 查看服务状态
# 设置服务开机启动、不启动、查看各级别下服务启动状态
chkconfig foo on systemctl enable foo.service 开机自动启动
chkconfig foo off systemctl disable foo.service 开机不自动启动
chkconfig foo systemctl is-enabled foo.service 查看特定服务是否为开机自动启动
chkconfig --list systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况
</syntaxhighlight>
=== 防火墙 ===
=== 防火墙 ===
Linux中有两种防火墙软件,ConterOS7.0以上使用的是firewall,ConterOS7.0以下使用的是iptables:
==== firewall ====
==== iptables ====


== 进程 ==
== 进程 ==

2020年10月15日 (四) 15:14的版本


启动

启动过程

Linux启动过程分析:

  1. BIOS自检
  2. 启动GRUB/LILO
  3. 运行Linux内核并检测硬件
  4. 运行系统的第一个进程init
  5. init读取系统引导配置文件“/etc/inittab”中的信息进行初始化
  6. /etc/rc.d/rc.sysinit 系统初始化脚本(读取用户密码等文件)
  7. /etc/rc.d/rcX.d/[KS]* 根据运行级别X(0、1、2?),配置服务
  8. /etc/rc.d/rc.local 执行本地特殊配置
  9. 其他特殊服务

运行级别

  1. 0:关机
  2. 1:单用户(类似于Windows安全模式?)
  3. 2:多用户状态没有网络服务
  4. 3:多用户状态有网络服务(常用)
  5. 4:(系统未使用)
  6. 5:图形界面
  7. 6:系统重启
  • shell中“startX”可进入图形界面,前提如果安装了
  • 修改默认的运行级别,“/etc/inittab”的“id:3:initdefault”中的级别数字

忘记密码

  • 进入单用户模式修改密码即可
    # 修改root用户密码
    passwd root (设置root的密码)
    
    # 设置启动级别
    #init 6
    


centos6系列:

  1. 在引导界面(redhat的grub引导界面)按e,进入编辑模式
    Centos6引导界面.png
  2. 移动光标到“Kernel ...”一行按e,进入kernel该行的编辑画面中
    Centos6选择内核.png
  3. 在kernel行末尾输入“ single”并回车(注意空格)
    Centos6选择内核 编辑.png
    修改后:
    Centos6选择内核 启动方式single.png
  4. 按b重启,进入系统
    Centos6single进入系统.png
  5. 进入系统修改密码
    Centos6修改密码.png


centos7系列:

  1. 在引导界面选择内核后,按e进入编辑模式
    (另一个“rescue”的内核为救援模式,主要是应用于系统无法进入的情况。)
    Centos7选择内核.png
  2. 编辑页面,将ro改为rw,在LANG 后添加init=/bin/sh(或/sysroot/bin/sh?)
    “rw”使文件系统被挂载为读写,才能修改密码;否则进入系统后需要使用“mount –o remount,rw /”来挂在文件系统为读写;
    Centos7选择内核 编辑.png
  3. 按 Ctrl+x 用修改的参数引导系统
    Centos7单用户模式.png
  4. 进入系统修改密码
    Centos7修改密码.png
    如果显示小方块,使用LANG=en把当前终端语言设置为英文即可;
    Centos7修改密码 切换终端语言.png
  5. 重启系统
    (如果之前系统启用了selinux)输入“touch /.autorelabel”,使SELinux生效:确保开机时重新设定 SELinux context,必須在根目录下添加隐藏文件“.autorelabel”;
    用“exec /sbin/init”来正常启动,或“exec /sbin/reboot”重启
    Centos7更新系统信息并重启.png

文件系统

分区

Linux分区.jpg
Linux分区信息.jpg

目录结构

Linux目录结构.jpg

命令 说明
系统必须
/boot 存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件
/etc 存放所有的系统需要的配置文件和子目录列表
/lib 系统最基本的动态连接共享库(类似于Windows的DLL文件)。几乎所有的应用程序都需要用到这些共享库。
/sys 该目录下安装了Linux2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:
  1. 针对进程信息的proc文件系统
  2. 针对设备的devfs文件系统
  3. 以及针对伪终端的devpts文件系统

该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中。

/selinux Redhat/CentOS 所特有的目录,存放selinux相关的文件(Selinux 是一个安全机制,类似于 windows 的防火墙)
指令集合
/bin 系统中的常用命令
/sbin (Superuser Binaries)存放的是系统管理员使用的系统管理程序
账户
/home 普通用户的相关文件(/home/用户名)
/root Root用户(系统管理员)的用户主目录
/usr (unix shared resources)共享资源目录,很多的用户应用程序和文件都放在这个目录(类似于windows的program files)
  1. /usr/bin:系统用户使用的应用程序;
  2. /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序;
  3. /usr/src:内核源代码默认的放置目录;
外部文件管理
/dev 系统中的所有外部设备相关文件
/media 类windows的其他设备(如U盘、光驱等等),识别后linux会把设备放到这个目录下。
/mnt 临时挂载路径
临时文件
/run 临时文件系统,存储系统启动以来的信息。
  1. 当系统重启时,这个目录下的文件应该被删掉或清除;
  2. 如果系统上有 /var/run 目录,应该让它指向 run;
/lost+found 一般情况下为空,系统非法关机后,这里就存放一些文件
/tmp 临时目录
运行过程使用
/var (variable)存放系统中经常变化的文件(如:日志、邮件)
/proc 虚拟的目录,是系统内存的映射,用来管理内存空间。
  1. 可以直接访问这个目录,来获取系统信息;
  2. 该目录的内容不在硬盘上而是在内存里,可以直接修改里面的某些文件来做修改。
扩展使用
/opt (默认为空)安装额外软件可以放在这个里面
/srv (不用做服务器则为空)存放服务启动后需要提取的数据
  • /bin, /usr/bin 是给系统用户使用的指令(除root外的普通用户),而/sbin, /usr/sbin 则是给 root 使用的指令
  • 在Linux中访问设备和访问文件的方式是相同的
  • swap:无挂载点的分区,交换分区

文件属性

使用 ll 或者 ls –l命令来显示一个文件的属性以及文件所属的用户和组:

Linux文件属性.jpg
Linux文件属性说明.png
Linux文件属性笔记.jpg

挂载

Linux挂载命令.jpg

  1. 挂载命令:
    mount [-参数] [设备名称] [挂载点]
    
    挂载光驱时,可直接使用“mount /mnt/cdrom”
  2. 卸载命令:
    unmount [设备名称]
    
  3. 查看目录在哪个分区
    df [目录全路径]
    
  4. 查看磁盘使用情况:
    df [-参数]
    
  5. 查看Linux分区信息:
    fdisk -l
    

用户管理

  • 尽量少用root,避免操作失误。可以用普通用户登录,在特殊操作时用“su -”(“su - root”)切换为系统管理员。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  1. 用户账号的添加、删除与修改。
  2. 用户口令的管理。
  3. 用户组的管理。
命令 说明
账号管理
useradd [选项] 用户名 添加用户账号:就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
  • Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

选项:

  1. -c:(comment)指定一段注释性描述。
  2. -d:(目录)指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  3. -g:(用户组)指定用户所属的用户组。
  4. -G:(用户组)指定用户所属的附加组。
  5. -s:(Shell文件)指定用户的登录Shell。
  6. -u:(用户号)指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
userdel [选项] 用户名 删除用户账号:就是要将/etc/passwd等系统文件中的该用户记录删除

选项:

  1. -r:把用户的主目录一起删除
usermod [选项] 用户名 修改用户账号:就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

选项:(同useradd)

  1. -c:
  2. -d:
  3. -g:
  4. -G:
  5. -s:
  6. -u:
口令管理
passwd [选项] 用户名 用户账号刚创建时没有口令,被系统锁定无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

选项:

  1. -l:锁定口令,即禁用账号。
  2. -u:口令解锁。
  3. -d:使账号无口令。
  4. -f:强迫用户下次登录时修改口令。
  • “passwd”:修改当前用户的口令
  • 普通用户只能修改自己口令,且修改时需要原始口令
用户组管理
groupadd [选项] 用户组 增加用户组

选项:

  1. -g:指定新用户组的组标识号(GID),不指定时在当前已有的最大组标识号的基础上加1为GID。
  2. -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
groupdel 用户组 删除用户组
groupmod [选项] 用户组 修改用户组属性

选项:

  1. -g:为用户组指定新的组标识号。
  2. -o:与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  3. -n:将用户组的名字改为新名字
  • 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限:
    newgrp root
    
    将当前用户切换到root用户组

伪用户(pseudo users)

系统中有一类用户称为伪用户(pseudo users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
常见的伪用户如下所示:

伪用户 含义
bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lp lp或lpd子系统使用
nobody NFS使用

与用户账号有关的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,包括:/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd 文件

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。它的内容类似下面的例子:

 cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

每一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
字段 说明
用户名 是代表用户账号的字符串
  1. 通常长度不超过8个字符,由大小写字母和/或数字组成
  2. 登录名中不能有冒号(:),因为冒号在这里是分隔符
  3. 为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
口令 存放着加密后的用户口令字,或特殊的占位字符(“x”、“*”等)。

由于/etc/passwd文件对所有用户都可读带来的隐患。许多Linux系统都使用了shadow技术:
把真正的加密后的用户口令字存放到/etc/shadow文件中,
而在/etc/passwd文件的口令字段中只存放一个特殊的字符。

用户标识号 是一个整数,系统内部用它来标识用户。

一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,
但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等

  1. 通常用户标识号的取值范围是0~65535
  2. 0是超级用户root的标识号
  3. 1~99由系统保留,作为管理账号
  4. 普通用户的标识号从100开始
  • 在Linux系统中,这个界限是500
组标识号 记录的是用户所属的用户组
  • 对应着/etc/group文件中的一条记录
注释性描述 记录着用户的一些个人情况

例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。

主目录 用户的起始工作目录,它是用户在登录到系统之后所处的目录。
登录Shell
用户登录后,要启动一个进程,负责将用户的操作传给内核,
这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

Shell是用户与Linux系统之间的接口。
常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

  • 如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为“/bin/sh”。

/etc/shadow 文件

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生,超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
内容如下:

 cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
字段 说明
登录名 (同上)
口令 加密后的用户口令字,长度为13个字符。
  • 如果为空,则对应用户没有口令,登录时不需要口令;
  • 如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
最后一次修改时间 表示的是从某个时刻起,到用户最后一次修改口令时的天数
最小时间间隔 指的是两次修改口令之间所需的最小天数
最大时间间隔 指的是口令保持有效的最大天数
警告时间 从系统开始警告用户到用户密码正式失效之间的天数
不活动时间 用户没有登录活动但账号仍能保持有效的最大天数
失效时间 给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。

期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

/etc/group 文件

用户组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
用户与组之间是多对多的关系:

  • 在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
  • 用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

内容如下:

root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段:

组名:口令:组标识号:组内用户列表
字段 说明
组名 用户组的名称。

与/etc/passwd中的登录名一样,组名不应重复

口令 用户组加密后的口令字。

一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*

组标识号 系统内部用来标识组。
组内用户列表 属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。

添加批量用户

Linux系统提供了批量创建用户的工具,使用步骤如下:

  1. 创建用户信息文本user.txt:
    每一列按照/etc/passwd密码文件的格式书写
    每个用户的用户名、UID、宿主目录都不可以相同
    密码栏可以留做空白或输入x号
    user001::600:100:user:/home/user001:/bin/bash
    user002::601:100:user:/home/user002:/bin/bash
    user003::602:100:user:/home/user003:/bin/bash
    user004::603:100:user:/home/user004:/bin/bash
    user005::604:100:user:/home/user005:/bin/bash
    user006::605:100:user:/home/user006:/bin/bash
    
  2. 以root身份执行命令/usr/sbin/newusers,并从user.txt中导入数据,创建用户:
    # newusers < user.txt
    
    然后执行命令 vipw 或 vi /etc/passwd 检查是否已经出现这些用户的数据,且对应宿主目录是否已经创建
  3. 执行命令/usr/sbin/pwunconv:将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉
    即为了方便下一步的密码转换工作,先取消 shadow password 功能。
    # pwunconv
    
  4. 编辑每个用户的密码对照文件:
    格式为:
    用户名:密码
    
    如“passwd.txt ”:
    user001:123456
    user002:123456
    user003:123456
    user004:123456
    user005:123456
    user006:123456
    
  5. 以 root 身份执行命令/usr/sbin/chpasswd
    chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏
    # chpasswd < passwd.txt
    
  6. (确定密码经编码写入/etc/passwd的密码栏后)执行命令/usr/sbin/pwconv将密码编码为 shadow password,并将结果写入/etc/shadow
    # pwconv
    

权限

chmod 用于改变目录或文件的权限。如,修改文件abc的权限:

  1. chmod 775 abc:赋予用户读写执行、用户组读执行、其他组读执行权限
  2. chmod u=rwx,g=rx,o=rx abd:(同上)
  3. chmod u-x,g+w abc:去除用户的执行权限、增加用户组的写权限
  4. chmod a+r abc:为用户、用户组、其他组,都增加读权限

chown 用于改变目录或文件的所有者:

  1. chown www abc:
  2. chown www ./abc:
  3. chown -R root ./abc:改变目录及其子目录的所属用户为root

chgrp 用于改变用户的所属组:

  1. chgrp root abc:

网络

服务

已安装服务的启停操作:

# 查看xxx服务状态
service xxx status
# 启动xxx服务
service xxx start
# 停止xxx服务
service xxx stop
# 重启xxx服务
service xxx restart
  • “service xxx start”等效于
    1. /etc/init.d/xxx start
    2. /etc/rd.d/init.d/xxx start
    3. systemctl start xxx.service

service 与 systemctl

service

service命令其实是去/etc/init.d目录下,去执行相关程序。长期以来 Linux 的启动一直采用init进程,这种方法有两个缺点:

  1. 启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  2. 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

systemctl

systemctl是 Systemd 的主命令,用于管理系统。
Systemd 是 Linux 系统工具,用来启动守护进程(Systemd 中的 d,即守护进程 daemon),能够快速并发地启动进程。
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。(参见阮一峰《Systemd 入门教程:命令篇》

  • 使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
  • systemctl 兼容了 service、chkconfig命令,如:
    # 管理服务的启动、重启、停止、重载、查看
    service foo start		systemctl start foo.service			启动服务
    service foo restart		systemctl restart foo.service		重启服务
    service foo stop		systemctl stop foo.service			停止服务
    service foo reload		systemctl reload foo.service		重新加载配置文件(不终止服务)
    service foo status		systemctl status foo.service		查看服务状态
    
    # 设置服务开机启动、不启动、查看各级别下服务启动状态
    chkconfig foo on		systemctl enable foo.service		开机自动启动
    chkconfig foo off		systemctl disable foo.service		开机不自动启动
    chkconfig foo			systemctl is-enabled foo.service	查看特定服务是否为开机自动启动
    chkconfig --list		systemctl list-unit-files --type=service	查看各个级别下服务的启动与禁用情况
    

防火墙

Linux中有两种防火墙软件,ConterOS7.0以上使用的是firewall,ConterOS7.0以下使用的是iptables:

firewall

iptables

进程

任务调度

任务调度:系统在某个特定时间,执行特定的命令或程序。

添加任务

  1. “crontab -e”:添加任务
  2. “0 2 * * * date >> /home/mydate”:在crontab中添加该命令,每天临晨两点把时间写到/home/mydate中
    • “0 2 * * *”为时间规则

调度多个任务

方法一:直接使用 crontab -e 添加任务
方法二:

  1. 把所有的任务写入一个可执行文件中(.sh文件,shell代码),并为文件设置可执行权限
  2. 再将可执行文件路径使用 corntab -e 添加到任务调度,如“* * * * * /root/mytask.sh”

终止任务

  1. crontab -l:列出当前所有调度任务
  2. crontab -r:终止调度任务

时间规则

时间规则“* * * * *”,分别表示:

“* * * * *”
说明 范围
分钟 每小时的第几分钟 0-59
小时 每天的第几小时 0-23
日期 每月的第几天 1-31
月份 每年的第几月 1-12
星期 每周的星期几 0-6
  • 范围不正确时,任务不执行

vi编辑器

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
二者分别定位于文本编辑器和程序开发工具。

  1. “vi Hello”:使用vi打开Hello文件
  2. 按下“i”:进入插入模式
  3. 按下“esc”:进入命令模式
  4. 输入“:wq”:保存并退出
    :q!”:推出不保存

工作模式

Linux编辑器vi-vim工作模式.png

键盘图

Linux编辑器vi-vim键盘图.gif

命令

  • “tab”键:双击命令提示,单机补全(当前目录下有的)文件名称。
命令 说明
start X 进入图形界面
shutdown -h now 立即关机
  1. poweroff 关机(poweroff -f 强制关机)
shutdown -r now 立即重启
logout 注销
man 命令 显示命令的用法
history 显示命令历史记录
  1. history 5:显示最近使用的5个历史命令

执行历史命令:

  1. !5:执行历史编号为5的命令
  2. !ls:执行最后一次以ls开头的命令
env 显示当前系统的环境变量