Linux学习笔记

Linux学习笔记

  • 1.文件目录操作命令
    • 1.1 ls命令:显示文件夹中内容
    • 1.2 cd命令:目录切换命令
    • 1.3 touch命令:创建文件命令
    • 1.4 mkdir命令:创建目录命令
    • 1.5 ln命令:创建文件连接命令
    • 1.6 cp命令:拷贝文件命令
    • 1.7 mv命令:移动(重命名)文件命令
    • 1.8 rm命令:删除文件(目录)命令
    • 1.9 tree命令:查看目录结构命令
    • 1.10 pwd命令:查看当前所在路径命令
    • 1.11 file命令:查看文件信息或类型命令
    • 1.12 文件补充说明
  • 2.文件内容查看与编辑命令
    • 2.1 vi/vim命令:编辑文件内容命令
    • 2.2 cat/tac命令:输出文件内容命令
    • 2.3 head命令:查看文件的头部内容命令
    • 2.4 tail命令:查看文件的尾部内容命令
    • 2.5 more命令:more文本阅读器命令
    • 2.6 less命令:less文本阅读器命令
  • 3.用户管理命令
    • 3.1 useradd命令:创建用户命令
    • 3.2 passwd命令:修改用户密码命令
    • 3.3 usermod命令:修改用户信息命令
    • 3.4 userdel命令:删除用户命令
    • 3.5 groupadd命令:创建用户组命令
    • 3.6 groupmod命令:修改用户组信息命令
    • 3.7 groupdel命令:删除用户组命令
    • 3.8 newgrp命令:用户切换所属用户组命令
    • 3.9 su命令:切换用户命令
    • 3.10 logout命令:退出当前登入用户命令
    • 3.11 id /who/whoami命令:查看用户身份命令
    • 3.12 w命令:查看负载信息/查看系统用户登录信息命令
    • 3.13 last/lastb/lastlog命令:查看用户历史登录信息命令
    • 3.14 补充
  • 4.文件权限管理命令
    • 4.1 chmod命令:设置不同用户对文件的权限命令
    • 4.2 chown命令:修改文件所属用户命令
    • 4.3 chgrp命令:修改文件所属用户组命令
    • 4.4 chattr命令:设置文件的特殊权限命令
  • 5.打包与压缩、解压命令
    • 5.1 tar命令:打包与压缩命令
    • 5.2 zip命令:压缩命令
    • 5.3 unzip命令:解压命令
  • 6.软件包管理命令
    • 6.1 rpm命令:rpm软件包管理器命令
    • 6.2 yum命令:软件安装与卸载命令
    • 6.3 wget命令:文件下载命令
    • 6.4 使用源码包安装软件
  • 7.标准输入输出流
  • 8.搜索与过滤、排序命令
    • 8.1find命令:搜索文件命令
    • 8.2管道符:|
    • 8.3 grep命令:过滤命令
    • 8.4 sort命令:排序命令
    • 8.5 xargs命令:参数传递命令
  • 9.时间日期命令
    • 9.1date命令:系统时间与日期命令
    • 9.2 cal命令:日历命令
  • 10.关机与重启命令
    • 10.1 shutdown命令:重启或关机命令
    • 10.2 init命令:系统运行级别切换命令
    • 10.3 reboot命令:重启命令
    • 10.4 poeroff命令:关机命令
    • 10.5 halt命令:直接关机命令
    • 10.6 exit命令:注销命令
  • 11.定时任务
    • 11.1 at命令:定时任务只执行一次
    • 11.2 crontab命令:定时任务多次执行
  • 12.进程管理命令
    • 12.1 ps 命令:查看系统进程信息
    • 12.2 kill命令:杀死进程
    • 12.3 systemctl命令:管理服务程序的运行状态
    • 12.4 uptime命令:查看系统负载
    • 12.5 top命令:实时监控系统CPU
  • 13.网络与防火墙命令
    • 13.1 ifconfig命令:显示网络设备信息
    • 13.2 ip命令:显示与操作网络配置信息
    • 13.3 firewall-cmd命令:防火墙相关命令
    • 13.4 ping命令:网络连通性测试命令
    • 13.5 网络配置文件
  • 14.磁盘管理与文件系统
    • 14.1 fdisk命令:磁盘分区命令(小于2T的磁盘)
    • 14.2 parted命令:磁盘分区命令(可以适用大于2T的磁盘)
    • 14.3 mkfs命令:格式化文件系统
    • 14.4 free命令:显示系统内存的使用情况
    • 14.5 swapon/swapoff:开启/关闭交换分区
    • 14.6 mount/umount命令:挂载/卸载文件系统命令
    • 14.7 df命令:显示文件系统的使用情况命令
    • 14.8 du命令:显示磁盘的使用情况命令
    • 14.9 文件系统检查与修复命令
    • 14.10 lsblk命令:列出所有可用块设备的信息命令
    • 14.11 sync命令:将内存缓冲区的内容写入磁盘命令
  • 15.常用快捷键

1.文件目录操作命令

1.1 ls命令:显示文件夹中内容

ls命令语法格式:ls [-alrtAFR] [name…]

常用参数:
-a:显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l:除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-h:将文件内容大小以GB、KB等易读的方式显示
-r:将文件以相反次序显示(原定依英文字母次序)
-t:将文件依建立时间之先后次序列出
-A:同 -a ,但不列出 "." (目前目录)".." (父目录)
-F:在列出的文件名称后加一符号;例如可执行文件则加 "*", 目录则加 "/"
-R:若目录下有文件,则以下之文件亦皆依序列出

常用写法示例:
#显示home文件夹中的内容
  ls home
#以更详细的方式显示home文件夹中的内容
  ls -l home		(等同于ll home)
#查看home文件夹中的隐藏文件
  ls -a home
#将home文件夹中的内容按照修改时间顺序显示
  ls -lt home
#将home文件夹中的内容按照修改时间顺序反序显示
  ls -ltr home
#将home文件夹中的文件大小以GB、KB等易读的方式显示
  ls -lh home

1.2 cd命令:目录切换命令

cd命令语法格式:cd [dirName]

cd命令没有可选参数
常用写法示例:
#以绝对路径进入home目录
cd /root/home
#以相对路径进入home目录(此时所在目录为root目录)
cd home
#返回当前账号家目录
cd/cd ~
#返回上一级目录
cd ../
#返回上次所在目录
cd -

1.3 touch命令:创建文件命令

touch命令语法格式:touch 【-acfm】【-d<日期时间>】【-r<参考文件或目录>】 【-t<日期时间>】【–help】【–version】[文件或目录…]

常用参数:
-a:改变档案的读取时间记录。
-m:改变档案的修改时间记录。
-c:假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f:不使用,是为了与其他 unix 系统的相容性而保留。
-r:使用参考档的时间记录,与 --file 的效果一样。
-d:设定时间与日期,可以使用各种不同的格式。
-t:设定档案的时间记录,格式与 date 指令相同。
--no-create:不会建立新档案。
--help:列出指令格式。
--version:列出版本讯息。

常用写法示例:
#创建一个文件(未指定文件创建位置时,默认在当前路径创建文件)
touch newfile
#指定位置创建一个文件
touch /home/newfile
#同时创建三个文件写法一
touch newfile1 newfile2 newfile3
#同时创建三个文件写法二
touch file{1,2,3}
#指定位置创建三个文件
touch /home/file{1,2,3}
#一次创建多个文件
touch file{1..100}
touch file{a..z}

1.4 mkdir命令:创建目录命令

mkdir命令语法格式:mkdir [-p] dirName

常用参数:
-p:递归创建目录

常用写法示例:
#创建一个目录
mkdir newdir
#指定位置创建一个目录
mkdir /home/newdir
#递归创建目录(若无-p参数,newdir1目录不存在时会报错,无法创建newdir2目录)
mkdir -p newdir1/newdir2
#一次性创建三个目录写法一
mkdir newdir1 newdir2 newdir3
#一次性创建三个目录写法二
mkdir newdir{1,2,3}
#指定位置创建三个目录
mkdir /home/newdir{1,2,3}
#一次性创建多个目录
mkdir newdir{1..100}
mkdir newdir{a..z}

1.5 ln命令:创建文件连接命令

ln命令语法格式: ln 【参数】【源文件或目录】【目标文件或目录】

文件系统简单描述:

1.ext4文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
2.inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、所有者和属组、大小、状态改变时间(ctime)、最近一次读取时间(atime)、最近一次修改时间(mtime)、数据真正保存的 block 编号。每个文件需要占用一个 inode。
3.block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。文件名记录在文件所在目录的 block 中。
4.读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;

**软链接:**类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
**硬链接:**因为文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。此方式不适用于目录。

常用参数:
-s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件

常用写法示例:
#创建一个硬链接(创建硬链接之后,即使log2021.log被删除,ln2021也能访问log2021.log中原本的内容)
ln log2021.log ln2021
#创建一个软链接(创建软链接之后,若log2021.log文件被删除,则ln2021失效)
ln -s log2021.log ln2021

1.6 cp命令:拷贝文件命令

cp命令语法格式:cp [options] source… directory

常用参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,生成硬链接文件。

常用写法示例:
#复制一个文件
cp a.txt b.txt
#递归复制一个目录
cp -r adir bdir
#复制一个目录下的所有文件
cp -r adir/ bdir
#覆盖一个文件并不给出提示
cp -f a.txt /home/a.txt

1.7 mv命令:移动(重命名)文件命令

mv命令语法格式:mv [options] source… directory

常用参数:
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
-v:显示移动是否成功

常用写法示例:
#移动一个文件
mv a.txt /root
#移动多个文件
mv a.txt b.txt c.txt /root
#使用通配符移动文件
mv *.txt /root
#移动一个目录
mv testdir newdir/
#移动多个目录
mv dir1 dir2 dir3 totaldir/
#使用通配符移动目录
mv dir* totaldir/
#重命名一个文件
mv a.txt b.txt
#重命名一个目录
mv testdir1/ testdir2/
mv testdir1 testdir2

1.8 rm命令:删除文件(目录)命令

rm命令语法格式:rm [options] name

注意:rm命令误操作时,会引发严重后果最好使用mv命令测试无误后再使用,或者删除前做好备份

常用参数:
-i:删除前逐一询问确认。
-f:即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r:将目录及以下之档案亦逐一删除。

常见用法示例:
#删除前询问
rm i a.txt
#直接删除目录和目录中的文件(适用于文件)
rm -rf testdir
rm -rf a.txt

1.9 tree命令:查看目录结构命令

tree命令语法格式:tree 【-aACdDfFgilnNpqstux】【-I <范本样式>】【-P <范本样式>】【目录…】

**补充:**Linux中默认是没有安装tree命令的
**centOS安装tree:**yum -y install tree
**ubuntu安装tree:**sudo apt-get install tree

常用参数:
-a:显示所有文件和目录。
-d:显示目录名称而非内容。
-f:在每个文件或目录之前,显示完整的相对路径名称。
-L:level 限制目录显示层级。
-t:用文件和目录的更改时间排序。
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。

常用写法示例:
#只显示第一层目录
tree -L 1 /home
#按照文件和目录更改时间排序显示
tree -t /home
#按照修改时间反序输出
tree -r /home
#显示完整的文件相对路径
tree -f /home
#只显示目录
tree -d /home
#显示所有目录与文件
tree -a /home
#存在链接文件时显示指向的目录
tree -l /home

1.10 pwd命令:查看当前所在路径命令

pwd命令语法格式: pwd 【–help】【–version】

#显示当前所在路径
pwd

1.11 file命令:查看文件信息或类型命令

file命令语法格式:file 【-bcLvz】【-f <名称文件>】【-m <魔法数字文件>…】【文件或目录…】

补充:

  • text/plain:普通文本。
  • text/html:HTML文本。
  • application/pdf:PDF文档。
  • application/msword:Word文档
  • image/png:PNG图片。
  • mage/jpeg:JPEG图片。
  • application/x-tar:TAR文件。
  • application/x-gzip:GZIP文件。
常用参数:
-b:列出辨识结果时,不显示文件名称。
-c:详细显示指令执行过程,便于排错或分析程序执行的情形。
-f:<名称文件>指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L:直接显示符号连接所指向的文件的类别。
-i:显示MIME类别
补充:MIME Type是用于描述文件的类型的一种表述方法,其将文件划分为多种类型,方便对其进行统一的管理。MIME Type指定了文件的类型名称、描述、图标信息,同时通过与.desktop应用程序描述文件整合,指定了文件的打开方式。

常用写法示例:
#查看文件的类型与编码格式
file test.txt
#查看文件的类型与编码格式但是不显示文件名
file -b test.txt
#查看链接文件指向文件的信息
file -L lntest
#根据一个文件中的记载的信息查看文件信息
file -f poetry_list.txt

1.12 文件补充说明

  • ~在Linux系统中代表用户家目录
  • /代表根目录是所有目录的最高层
  • .代表当前目录
  • …代表上一级目录

2.文件内容查看与编辑命令

2.1 vi/vim命令:编辑文件内容命令

vi/vim命令语法格式:vi/vim 参数 filename

补充:

  • vi编辑器Linux系统默认自带,vim编辑器是vi的超集,默认未安装
  • vi/vim编辑器编辑的文件不存在时会创建一个文件

centOS安装vim:
**检查系统是否安装vim:**rpm -qa|grep vim
需要的三个包(后面对应的是yum版本号):
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
**安装自己缺少的的包(这里以一个包都未安装为例):*yum -y install vim

**Ubuntu安装vim:**sudo apt install vim

常用参数:
-r:恢复上次 vim 打开时崩溃的文件
-R:以只读方式打开文件

常见用法示例:
#恢复上次崩溃的文件内容
vim -r test.txt
#以只读方式打开文件
vim -R test.txt
vim编辑器的三个模式:
1.命令模式:进入vim编辑器之后的默认模式,此模式不能编辑文本内容,按键输入将会被当做命令执行
常用命令:
	a:将光标移动到右边的下一个字符,进行编辑
	i:以替换方式进行编辑
	u:撤销
	yy:复制光标所在行
	yl:复制光标为起始位的指定个数字符
	yh:复制光标前的指定个数字符
	p:粘贴复制的内容
	dd:删除光标所在行
	G:将光标快速切换尾部
	gg:将光标快速切换首部
	ngg:n表示移动到第几行
	$:将光标移动到一行的结尾
	0:将光标移动到一行的行首
	/pattern:查找匹配字符,所有被匹配的字符均会变色,按下字符n光标会移动到下一个被匹配中的字符串位置
命令模式常用命令用法示例:
#复制光标之前的5个字符
5yh
#复制光标为起始位的5个字符
5yl
#复制从光标所在行为起始行的五行内容
5yy
#粘贴复制的内容
p
#删除从光标所在行为起始行的五行内容
5dd
#删除从光标所在位置到行尾的所有内容
d$
#删除从光标所在位置之前的字符到行首的所有内容
d^
#批量删除行
ctrl +v之后选中想要删除的行 shift+d 批量删除行
#批量注释
ctrl +v之后选中想要注释的行,shift+i,输入# ,然后按2次ESC批量注释行
#批量取消注释
ctrl +v选中#,然后d ,批量取消注释。(也可以用来删除其他的行首字符)
2.输入模式:进入此模式之后可以编辑文本内容
编辑模式下按键功能:
	字符按键以及Shift组合:输入字符
	ENTER回车键:换行
	BACKSPACE退格键:删除光标前一个字符
	DEL删除键:删除光标后一个字符
	方向键:在文本中移动光标
	HOME/END:移动光标到行首/行尾
	Page Up/Page Down:上/下翻页
	Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
	ESC:退出输入模式,切换到命令模式
3.底线命令模式:在命令模式下输入:之后进入底线命令模式
常用命令:
	:wq:保存并退出
	:w:保存
	:q:退出
	:wq!:强制保存退出
	:q!:强制退出

2.2 cat/tac命令:输出文件内容命令

cat命令命令语法格式:cat [-AbeEnstTuv] [–help] [–version] fileName

tac命令语法格式:tac [-brs] [–help] [–version] fileName

常用参数:
-n:输出文件内容时显示行号

常见用法示例:
#输出test.txt文件中的内容并且显示行号
cat -n test.txt

#tac命令其实就是cat命令,只是是从最后一行开始输出
tac test.txt

2.3 head命令:查看文件的头部内容命令

head命令语法格式:head [参数] [文件]

常用参数:
-n<行数>:显示的行数。

常见用法示例:
#显示test文件的前5行
head -5 test.txt

2.4 tail命令:查看文件的尾部内容命令

tail命令语法格式:tail [参数] [文件]

常用参数:
-f:循环读取
-n<行数>:显示文件的尾部 n 行内容

常见用法示例:
#显示test文件内容并实时刷新
tail -f test.txt
#显示test文件的后5行
tail -5 test.txt
#显示test文件的后5行并且实时刷新
tail -5f test.txt

2.5 more命令:more文本阅读器命令

more命令语法格式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames…]

常用参数:
-num:一次显示的行数
-p:不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c:跟 -p 相似,不同的是先显示内容再清除其他旧资料
-d:提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声

常见用法示例:
#显示test文件一次显示20行,并且先清除萤幕后再显示内容
more -p -20 test.txt

常用操作命令:
	Enter:向下n行,需要定义。默认为1行
	Ctrl+F:向下滚动一屏
	空格键:向下滚动一屏
	Ctrl+B:返回上一屏
	=:输出当前行的行号
	:f:输出文件名和当前行的行号
	V:调用vi编辑器
	!:调用Shell,并执行命令
	q:退出more

2.6 less命令:less文本阅读器命令

less命令语法格式:less [参数] 文件

常用参数:
-f:强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-N:显示每行的行号

常用操作命令:
	b:向上翻一页
	d:向后翻半页
	h:显示帮助界面
	q:退出less 命令
	u:向前滚动半页
	y:向前滚动一行
	空格键:滚动一页
	回车键:滚动一行
	[pagedown]:向下翻动一页
	[pageup]:向上翻动一页

3.用户管理命令

Linux中用户与用户组的概念:

  • Linux是多用户多任务操作系统允许多个用户同时登陆,并执行不同的任务
  • Linux中用户分为三种:
    • 超级用户(root):拥有最高权限,可以访问所有目录,uid为0
    • 系统用户:此用户用于程序使用,并不能登录,uid 1~499
    • 普通用户:登录之后就处于自己的家目录,只能访问家目录与共享目录中的内容,默认家目录为home目录,uid 500~65535
    • 补充:将普通用户的uid改为0,则可以拥有超级管理员权限,但是家目录不会改变
  • 用户组是拥有一类权限的用户的组合,使用用户组可以方便对用户的管理
  • 一个用户可以属于多个用户组,一个用户组中也可以存在多个用户

3.1 useradd命令:创建用户命令

useradd命令语法格式:useradd [-mMnr] [-c <备注>] [-d <登入目录>] [-e <有效期限>] [-f <缓冲天数>] [-g <群组>] [-G <群组>] [-s ] [-u ] [用户帐号]

补充:创建用户时默认无密码,若创建时使用了-p参数则可以设置密码(使用密文设置密码),建议创建用户时不设置密码,创建完成之后使用passwd命令修改用户密码

常用参数:
-c:加上备注文字。备注文字会保存在passwd的备注栏位中。
-d:指定用户登入时的起始目录,则同时使用-m选项,可以创建主目录。
-m:自动建立用户的登入目录。
-e:指定帐号的有效期限。
-f:指定在密码过期后多少天即关闭该帐号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-n:取消建立以用户名称为名的群组.
-s:指定用户登入后所使用的shell解释器。
-u:指定用户ID。

常见用法示例:
#使用默认方式创建一个用户
useradd jack
#创建一个普通用户,并指定用户过期时间为2021年10月21日
useradd -e "Oct 21,2021" jack
#创建一个用户并指定用户id
useradd -u 666 jack
#创建一个用户并指定其所属用户组
useradd -g group jack
#创建一个用户,并指定该用户所用的shell解释器,所属主组,附属组
useradd -s /bin/sh -g group -G qwe,asd jack

3.2 passwd命令:修改用户密码命令

passwd命令语法格式:passwd [选项] 用户名

常用参数:
-S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
-l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;
-u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
--stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
-n:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
-x:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
-w:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
-i:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。

常见用法示例:
#修改用户jack的密码(修改密码时,输入不会被显示,若密码少于六位会显示密码不合规范,坚持使用此密码时再次输入同样的密码即可设置成功)
passwd jack
#若当前登入用户jack需要修改自己的密码时,可以省略用户名
passwd 

3.3 usermod命令:修改用户信息命令

usermod命令语法格式:usermod [-LU] [-c <备注>] [-d <登入目录>] [-e <有效期限>] [-f <缓冲天数>] [-g <群组>] [-G <群组>] [-l <帐号名称>] [-s ] [-u ] [用户帐号]

常用参数:
-c:修改用户帐号的备注文字。
-d:修改用户登入时的目录。
-e:修改帐号的有效期限。
-f:修改在密码过期后多少天即关闭该帐号。
-g:修改用户所属的群组。
-G:修改用户所属的附加群组。
-l:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s:修改用户登入后所使用的shell。
-u:修改用户ID。
-U:解除密码锁定。

常见用法示例:
#修改用户登入目录
usermod -d /home/jack jack
#修改用户id
usermod -u 777 jack
#修改用户到期时间
usermod -e "Oct 21,2021" jack
#修改用户所用的shell解释器,所属主组,附属组
usermod -s /bin/sh -g group -G qwe,asd jack
#锁定用户密码
usermod -L jack
#接触用户密码锁定
usermod -U jack

3.4 userdel命令:删除用户命令

userdel命令语法格式:userdel [-r] [用户帐号]

常用参数:
-r:删除用户登入目录以及目录中所有文件。

常见用法示例:
#删除一个用户包括家目录
userdel -r jack

3.5 groupadd命令:创建用户组命令

groupadd命令语法格式:groupadd [-g] gid [-o]] [-r] [-f] group

常用参数:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。

常见用法示例:
#创建一个用户组并添加组id
groupadd -g 666 newgroup

3.6 groupmod命令:修改用户组信息命令

groupmod命令语法格式:groupmod [-g <群组识别码> <-o>] [-n <新群组名称>] [群组名称]

常用参数:
-g:设置欲使用的群组识别码。
-o:重复使用群组识别码。
-n:设置欲使用的群组名称。

常见用法示例:
#修改用户组的组id
groupmod -g 777 newgroup
#修改用户组的组名
groupmod -n newgroup02 newgroup

3.7 groupdel命令:删除用户组命令

groupdel命令语法格式:groupdel [群组名称]

常见用法示例:
#删除一个用户组
groupdel group

3.8 newgrp命令:用户切换所属用户组命令

newgrp命令语法格式:newgrp [群组名称]

补充:使用newgrp命令切换用户的登入组时,此用户必须在切换的组内
常见用法示例:
#将用户登入组切换为root组
newgrp root

3.9 su命令:切换用户命令

su命令语法格式:su [-fmp] [-c command] [-s shell] [–help] [–version] [-] [USER [ARG]]

常用参数:
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

常见用法示例:
#切换用户为jack(不改变所在目录,不改变环境变量)
su jack
#切换用户为jack(改变当前所在目录为切换的用户家目录,改变环境变量)
su -jack
#切换到root用户,shell环境不切换
su
#切换到root用户,并且变更shell环境
su -

3.10 logout命令:退出当前登入用户命令

#退出当前登入用户
logout

3.11 id /who/whoami命令:查看用户身份命令

常见用法示例:
#查询用户jack的信息
id jack
#查看当前系统使用者
who
#查看自己登入使用的用户信息
whoami

3.12 w命令:查看负载信息/查看系统用户登录信息命令

#查看当前系统负载与用户登录信息
w

3.13 last/lastb/lastlog命令:查看用户历史登录信息命令

#一般显示方式
last
#简略显示用户最近登录信息,并指定显示的个数
last -n 5 -R
#最后一列显示主机ip
last -n 5 -a -i
#显示登录失败的用户记录
lastb
#显示所有用户最近的一次登录信息(需要使用root登录才能使用这条命令)
lastlog

3.14 补充

用户信息文件(/etc/passwd):

  • 字段1:用户名称
  • 字段2:密码标志,"x"表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件。
  • 字段3:UID
  • 字段4:GID(用户初始组ID)
  • 字段5:用户说明
  • 字段6:家目录(普通用户为home目录,root用户为根目录)
  • 字段7:登陆之后使用的的shell解释器(默认为bash)

影子文件(/etc/shadow):

  • 字段1:用户名
  • 字段2:加密密码 如果密码位是 “!!”或者“*”代表没有密码。不能登录
  • 字段3:密码最后一次的修改时间。使用1970年1月1日为标准时间,每过一天,时间戳加一。
  • 字段4:两次密码的修改时间间隔
  • 字段5:密码有效期
  • 字段6:密码修改到期前的警告天数
  • 字段7:密码过期后的宽限天数 0代表立马失效 1 代表 永远不会失效

组信息文件(/etc/group):

  • 字段1:组名
  • 字段2:组密码标志
  • 字段3:GID group id
  • 字段4:组中附加用户

组密码文件(/etc/gshadow):

  • 字段1:组名
  • 字段2:组密码
  • 字段3:组管理员用户名
  • 字段4:组中附加用户

4.文件权限管理命令

4.1 chmod命令:设置不同用户对文件的权限命令

用户对文件的权限分为:

  • 可读权限(r):对应的权限数字为4
  • 可写权限(w):对应的权限数字为2
  • 可执行权限(x):对应的的权限数字为1

用户与文件的关系分为:

  • 文件所有者(u)
  • 文件所有者所在组(g)
  • 其他用户(o)

chmod命令语法格式:chmod [-cfvR] filename

常用参数:
-c:若该文件权限确实已经更改,才显示其更改动作
-f:若该文件权限无法被更改也不要显示错误讯息
-v:显示权限变更的详细资料
-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

常见用法示例:
#设置文件为所有人可读
chmod ugo+r test.txt
#a也可以代表所有用户
chmod a+r test.txt
#取消文件所有者的可执行权限
chmod u-x test.txt
#设置文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 
chmod ug+w,o-w file1.txt file2.txt
#设置所有人对此文件均有所有权限
chmod a=rwx test.txt
#使用权限数字设置该文件对不同用户的权限(设置所有人对此文件均有所有权限)
chmod 777 test.txt

4.2 chown命令:修改文件所属用户命令

补充:

  • 利用 chown 将指定文件的拥有者改为指定的用户或组,可以使用用户名或者用户 ID组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。
  • chown 需要超级用户 root 的权限才能执行此命令。
  • 只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp命令。

chown命令语法格式:chown [-cfhvR] [–help] [–version] user[:group] file…

常用参数:
user: 新的文件拥有者的使用者 ID
group: 新的文件拥有者的使用者组(group)
-c:显示更改的部分的信息
-f:忽略错误信息
-h:修复符号链接
-v:显示详细的处理信息
-R:处理指定目录以及其子目录下的所有文件
--help:显示辅助说明
--version:显示版本

常见用法示例:
#设置test.txt文件的所有者为root
chown root test.txt
#设置文件的所有者为jack群体组为jackgroup
chown jack:jackgroup test.txt
#将当前目录下的所有文件与子目录的拥有者皆设为jack,群体的使用者jackgroup
chown -R jack:jackgroup *
#使用组id设置文件关联组,不改变所有者
chown :512 test.txt

4.3 chgrp命令:修改文件所属用户组命令

chgrp命令语法格式:chgrp [-cfhRv] [–help] [–version] [所属群组] [文件或目录…]

或 chgrp [-cfhRv] [–help] [–reference=<参考文件或目录>] [–version] [文件或目录…]

常用参数:
-c或--changes:效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent:不显示错误信息。
-h或--no-dereference:只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose:显示指令执行过程。
--help:在线帮助。
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
--version:显示版本信息。

常见用法示例:
#修改文件的群组属性为bin
chgrp bin test.txt
#根据文件test01.txt改变文件test02.txt的群组属性
chgrp --reference=test01.txt test02.txt

4.4 chattr命令:设置文件的特殊权限命令

此命令用于修改存放在ext2文件系统上的文件或目录属性,这些属性存在8种模式:

  • a:让文件或目录仅供附加用途。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:将文件或目录排除在倾倒操作之外。
  • i:不得任意更动文件或目录。
  • s:保密性删除文件或目录。
  • S:即时更新文件或目录。
  • u:预防意外删除。

chattr命令语法格式:chattr [-RV] [-v<版本编号>] [+/-/=<属性>] [文件或目录…]

常用参数:
-R:递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号>:设置文件或目录版本。
-V:显示指令执行过程。
+<属性>:开启文件或目录的该项属性。
-<属性>:关闭文件或目录的该项属性。
=<属性>:指定文件或目录的该项属性。

常见用法示例:
#用chattr命令防止系统中某个关键文件被修改
chattr +i test.txt
#让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
chattr +a log.txt

5.打包与压缩、解压命令

5.1 tar命令:打包与压缩命令

tar命令语法格式:tar [参数] 源文件或目录

常用参数:
-c:将多个文件或目录进行打包。
-A:追加 tar 文件到归档文件。
-f:指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v:显示执行过程;
-z:创建一个gz的文件压缩包
-j:创建一个bz2的文件压缩包
-J:创建一个xz格式的文件压缩包(压缩比:gz<bz<xz)
-x:对tar包做解打包操作。
-t:只查看tar包中有哪些文件或目录,不对tar包做解打包操作。
-C:指定解打包位置。

常见用法示例:
#打包data文件夹命名为data.tar(仅打包不压缩)
tar -cvf data.tar data/
#解包data.tar(可以使用 -C 之后指定解包路径)
tar -xvf data.tar 
#打包data文件夹命名为data.tar.gz(打包并且使用gz格式压缩)
tar -zcvf data.tar.gz data/
#解包并解压缩data.tar(可以使用 -C 之后指定解包路径)
tar -zxvf data.tar 
#解压tar包到home目录
tar -zxvf data.tar -C /home
#列出压缩文件内容
tar -tzvf test.tar.gz

5.2 zip命令:压缩命令

zip命令语法格式:zip [参数] [文件]

常用参数:
-q:不显示指令执行过程
-r:递归处理,将指定目录下的所有文件和子目录一并处理
-z:替压缩文件加上注释
-v:显示指令执行过程或显示版本信息
-n<字尾字符串>:不压缩具有特定字尾字符串的文件
-d:删除压缩文件中的指定文件

常见用法示例:
#压缩某个目录下的所有文件
zip -q -r test.zip /home/test
#从压缩文件中删除指定文件
zip -dv test.zip testlog.txt

5.3 unzip命令:解压命令

unzip命令语法格式:unzip [参数] [文件]

常用参数:
-v:不解压压缩文件并查看压缩文件内容
-t:验证压缩文件是否完全
-d:指定压缩文件解压目录
-n:解压时不覆盖已存在文件

常见用法示例:
#查看压缩文件中的内容
unzip -v data.zip
#检验压缩文件是否下载完全
unzip -t data.zip
#解压压缩包到当前目录
unzip data.zip
#解压压缩文件到指定目录
unzip -d /home data.zip

6.软件包管理命令

6.1 rpm命令:rpm软件包管理器命令

补充:rpm安装时,需要自己安装软件所需的依赖不太方便

rpm命令安装软件包时默认安装位置:

  • /etc/ 配置文件安装目录
  • /usr/bin/ 可执行的命令安装目录
  • /usr/lib/ 程序所使用的函数库保存位置
  • /usr/share/doc/ 基本的软件使用手册保存位置
  • /usr/share/man/ 帮助文件保存位置

rpm命令语法格式:rpm [参数] [软件包]

常用参数:
-a:查询所有的软件包
-b或-t:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合”-l”参数使用
-d:只列出文本文件,本参数需配合”-l”参数使用
-e或--erase:卸载软件包
-f:查询文件或命令属于哪个软件包
-h或--hash:安装软件包时列出标记
-i:显示软件包的相关信息
--install:安装软件包
-l:显示软件包的文件列表
-p:查询指定的rpm软件包
-q:查询软件包
-R:显示软件包的依赖关系
-s:显示文件状态,本参数需配合”-l”参数使用
-U或--upgrade:升级软件包
-v:显示命令执行过程
-vv:详细显示指令执行过程

常见用法示例:
#安装某个rmp包
rpm -ivh xxx.rpm
#忽略报错强制安装某个软件包
rpm --force -ivh xxx.rpm
#显示rpm包中文件具体的安装位置
rpm -ql xxx	
#列出所有安装过的包
rpm -qa
#查询是否安装某个软件
rpm -qa | grep xxx	
#显示详细的安装信息
rpm -qi xxx		
#升级某个软件包
rpm -Uvh xxx.rpm
#卸载某个rpm包
rpm -e xxx.rpm

6.2 yum命令:软件安装与卸载命令

yum命令:

  • yum命令是一个rpm包管理工具,在安装软件是能够自动安装软件所需依赖
  • 使用yum命令安装时默认的安装位置与直接使用rpm命令安装位置相同
  • yum命令查找所需软件包可以从本地仓库查找,也可以在指定网络源中查找

yum命令语法格式:yum [options] [command] [package …]

常用参数:
-y:安装过程出现选择时全部使用yes
-q:不显示安装过程
-h:显示帮助

常见用法示例:
#列出所有可安裝的软件清单
yum list
#列出所有以mysql开头的软件包
yum list mysql*
#从yum源服务器上查找与mysql相关的所有软件包
yum search mysql
#安装指定的软件
yum install <package_name>
#列出所有可更新的软件清单
yum check-update
#更新所有软件
yum update
#仅更新指定的软件
yum update <package_name>
#删除软件包命令
yum remove <package_name>
#清除缓存
yum clean
#yum使用的服务器源为国外的源访问时可能会很慢,修改为国内的镜像源可以提升速度
#修改yum的源为阿里云
#安装wget 
yum -y install wget
#备份当前的yum源
mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex
#新建空的yum源设置目录
mkdir /etc/yum.repos.d
#下载阿里云的yum源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#重建缓存
yum clean all
yum makecache
# 查看系统可用的yum源
yum repolist enabled

6.3 wget命令:文件下载命令

补充:使用wget命令前需要安装 yum -y install wget

wget命令语法格式:wget [options] [path or URL]

常用参数:
-v:显示详细的过程
-O:指定下载之后的文件名
-c:下载时出现中断可以断点续传
-b:在后台下载
-i:按照参照文件下载多个文件
-o:将下载信息写入日志
-P:指定下载目录(默认下载到当前目录)

常见用法示例:
#使用wget下载某个文件
wget http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
#使用 wget -O 下载并以不同的文件名保存 
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
#使用 wget -c 断点续传 
wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
#使用 wget -b 后台下载
wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
#按照参照文件下载多个文件
wget -i filelist.txt
#指定目录下载
wget -P /etc/software  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

6.4 使用源码包安装软件

为什么要使用源码包安装:

  • 并不是所有的安装包都有已经生成的rpm包的,还有一些已经编写好的,但是还没有进行编译的源码包
  • 使用yum或者rpm命令安装所需要的软件时,若想要安装到自定义的位置时不方便
  • 使用源码包安装的软件运行效率更高
#使用源码包编译安装之前需要在系统中安装好c与c++环境,因为大部分软件的源码是使用c或c++编写的
#检查是否安装c环境
rpm -q gcc
#检查是否安装c++环境
rpm -q g++
#安装c与c++环境
yum install -y gcc gcc-c++
#检查是否安装make
rpm -q make
#安装make
yum -y install make
#检查是否成功安装
yum list
#使用wget下载源码包
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.26.tar.gz
#解压源码包
tar -zxvf mysql-8.0.26.tar.gz
#进入解压目录
cd mysql-8.0.26
#软件配置与检查,指定安装目录为/home/mysql
./configure --prefix=/home/mysql
#编译检查源码包
make
#安装源码包(可以使用 make&&make install 编译检查通过之后直接安装,如果使用./configure或者make报错则一定要执行make clean命令)
make install
#卸载源码包,只需要关闭程序删除安装目录即可

7.标准输入输出流

输入输出:

  • 标准输入0:从键盘中获取输入
  • 标准输出1:输出到控制台
  • 标准错误输出2:输出到控制台

输入输出重定向符:

  • 输出重定向:
    • “>”:覆盖性输出
    • “>>”:追加输出
  • 输入重定向:
    • “<”:覆盖输入
    • “<<”:追加输入
#将错误输出写入到黑洞文件
2>/dev/null
#指将标准输出错误输出输出到标准输出,并且将标准输出写入黑洞文件,此时两种输出均会写入黑洞文件中
1>/dev/null 2>&1	或	>/dev/null 2>&1
#将标准错误输出输出到屏幕,标准输出写入黑洞文件
2>&1 >/dev/null

8.搜索与过滤命令

8.1find命令:搜索文件命令

find命令语法格式:find 搜索路径 [选项] 搜索内容

常用参数:
-name:按照文件名搜索;
-iname:按照文件名搜索,不区分文件名大小
-inum:按照 inode 号搜索
-size[+-]大小:按照指定大小搜索文件,+表示大于指定值的文件,-表示小于指定值的文件,kb的单位为k,mb的单位为M
-user:按照用户名査找所有者是指定用户的文件
-group:按照组名査找所属组是指定用户组的文件
-nouser:査找没有所有者的文件
-type:指定查询文件的类型
-mindepth n:指定查询的最小深度
-maxdepth n:指定查询的最大深度
-exec:后面接查找完成后需要做的操作,{}表示一批文件,\;必须用于命令结尾
-ok:与-exec作用相同,只不过会在处理前询问
-a:and逻辑与
-o:or逻辑或
-not:not逻辑非

常见用法示例:
#查找home目录下的test.txt文件
find /home -name test.txt
#查找home目录下的test.txt文件,并不区分大小写
find /home -iname test.txt
#查找更目录中25kb的文件
find / -size 25k
#查找更目录中小于25kb的文件
find / -size -25k
#查找根目录下的所有子目录并指定最大查询深度为5,最小查询深度为2(初始选择的路径为第0层)
find / -mindepth 2 -maxdepth 5  -type d 
#查询没有归属的文件
find / -nouser
#在根目录下搜索大于2kb的普通文件
find / -size + 2k -a -type f
#在根目录下搜索名字为test01或者test02的文件
find / -name test01 -o test02
#在根目录下搜索名字不为test01的文件
find / -not -name test 
#查询data1文件夹中的所有txt文件并移动到data2文件夹中
find data1/ -name *.txt -exec mv {} data2/ \;
#查询所有名为test的文件并直接删除
find -type f -name test -exec rm -rf {} \;
#查询所有名为test的文件并在删除前询问
find -type f -name test -ok rm -rf {} \;

8.2 管道符:|

管道符语法格式:命令1 | 命令2

| 的作用:| 是将上一条命令的输出传递给下一条命令处理

8.3 grep命令:过滤命令

grep命令语法格式:grep [选项] ”模式“ [文件]

补充:grep通常用作过滤,也可以直接搜索

常用参数:
-i:匹配时忽略大小写
-v:匹配结果取反
-c:显示指定信息在文件中有多少行出现
-E:匹配条件使用扩展的正则表达式

常见语法示例:
#屏蔽ipv6的输出
ifconfig | grep inet | grep -v inet6
#只列出带有test前缀的文件
ll | grep test

8.4 sort命令:排序命令

sort命令语法格式:sort [参数] 文件名

常用参数:
-f:忽略大小写;
-b:忽略每行前面的空白部分;
-n:以数值型进行排序,默认使用字符串排序;
-r:反向排序;
-u:删除重复行。就是 uniq 命令;
-t:指定分隔符,默认分隔符是制表符;
-k [n,m]:按照指定的字段范围排序。从第 n 个字段开始,到第 m 个字(默认到行尾);

常见用法示例:
#排序并去除重复的输出
sort -u number.txt
#降序排序
sort -r number.txt
#以数字排序,而不是字符
sort -n number.txt
#指定分隔符,并且指定分割后的第二列用来排序
sort -n -k 2 -t: number.txt

8.5 xargs命令:参数传递命令

xargs命令语法格式:somecommand |xargs -item command

补充:

  • xargs命令一般与管道符连用
  • 此命令会把上一条命令的输出作为参数传递给下一条命令
  • xargs命令之后默认的命令为echo
常用参数:
-n:指定每行输出个数
-d:定义一个定界符,默认为回车

常见用法示例:
#多行输出变为单行输出
cat test.txt | xargs
#限制每行输出三个
cat test.txt | xargs -n 3
#查找home目录并列出这个目录中的内容
find / -type d -name home |xargs ls -l 
#修改定界符为X之后输出
echo "nameXnameXnameXname" | xargs -dX

9.时间日期命令

9.1 date命令:系统时间与日期命令

date命令语法格式:date [选项] [参数]

常用参数:
-s:将系统时间设为 datestr 中所设定的时间

常见用法示例:
#输出当前时间
date
#修改系统时间为2021年10月15日08:00:00
date -s "20211015 08:00:00"

9.2 cal命令:日历命令

cal命令语法格式:cal [参数] [月份] [年份]

常用参数:
-1:显示一个月的月历
-3:显示系统前一个月,当前月,下一个月的月历
-s:显示星期天为一个星期的第一天,默认的格式
-m:显示星期一为一个星期的第一天

常见用法示例:
#输出本月日历
cal
#输出2018年日历
cal 2018
#输出2018年九月的日历
cal 9 2018

10.关机与重启命令

10.1 shutdown命令:重启或关机命令

shutdown命令语法格式:shutdown [选项] 时间 [警告信息]

常用参数:
-c:取消已经执行的 shutdown 命令;
-h:关机;
-r:重启;

常见用法示例:
#立刻关机
shutdown -h now
#十分钟之后关机
shutdown -h 10
#指定时间关机
shutdown -h 05:30
#立即重启计算机
shutdown -r now
#指定时间重启计算机,并且把重启命令放置在后台
shutdown -r 05:30 &
#取消定时重启
shutdown -c

10.2 init命令:系统运行级别切换命令

init命令语法格式:init 运行级别

Linux系统的运行级别:

  • 0:关机
  • 1:单用户模式,只root用户进行维护
  • 2:多用户模式,不能使用NFS(Net File System)
  • 3:完全多用户模式(标准的运行级别)
  • 4:安全模式
  • 5:图形界面
  • 6:重启
#关机
init 0
#重启
init 6

10.3 reboot命令:重启命令

#重启计算机
reboot

10.4 poeroff命令:关机命令

poeroff命令语法格式:poeroff [参数]

常用参数:
-n:在关机前不做将记忆体资料写回硬盘的动作
-w:并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d:不把记录写到 /var/log/wtmp 文件里
-i:在关机之前先把所有网络相关的装置先停止
-p:关闭操作系统之前将系统中所有的硬件设置为备用模式。

常见用法示例:
#关机
poeroff

10.5 halt命令:直接关机命令

halt命令语法格式:halt [参数]

常用参数:
-n:在关机前不做将记忆体资料写回硬盘的动作
-w:并不会真的关机,只是把记录写到 /var/log/wtmp 文件里
-d:不把记录写到 /var/log/wtmp 文件里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令
-i:在关机之前先把所有网络相关的装置先停止
-p:当关机的时候,顺便做关闭电源(poweroff)的动作

常见用法示例:
#关闭系统,实际上调用的是shutdown -h
halt

10.6 exit命令:注销命令

#注销用户、退出当前shell
exit

11.定时任务

11.1 at命令:定时任务只执行一次

at命令的语法格式:at [选项] [时间]

at命令:

  • at命令指定的定时任务,导致了指定时间只会执行一次
  • at命令系统并未自带,需要手动安装
  • atd是at命令的守护进程,在使用at命令之前请确保atd服务已经启动

at命令的访问控制:

  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。
#检查at命令是否安装
rpm -q at
#安装at命令
yum -y install at
#启动atd服务
systemctl atd start
#设置atd服务开机时自动启动
chkconfig atd on
常用参数:
-m:当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户。
-c:工作标识号,显示该 at 工作的实际内容。
-t:时间,在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm。
-d:删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同。
-l:列出当前所有等待运行的工作,和 atq 命令具有相同的额作用。
-f:指定所要提交的脚本文件。

时间参数可用格式:
HH:MM						比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
Midnight(midnight)			代表 12:00 AM(也就是 00:00)。
Noon(noon)					代表 12:00 PM(相当于 12:00)。
Teatime(teatime)			代表 4:00 PM(相当于 16:00)。
英文月名 日期 年份	   		   比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
MMDDYY、MM/DD/YY、MM.DD.YY   比如 011518 表示 2018 年 1 月 15 号。
now+时间					   以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。
#编写一个.sh文件
vim hello.sh
#文件中写入
#!/bin/bash
echo "hello world"
#赋予脚本文件可执行权限
chmod +x hello.sh
#使用at命令设置此脚本两分钟之后执行
at now +2 minutes
at> /root/hello.sh >> /root/hello.log
#使用ctl+d保存任务
at> <EOF>
#设置定时关机
at 02:00 2021-10-20
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOF>
#查看当前等待运行的任务
atq
#取消某个等待运行的9号任务
atrm 9

11.2 crontab命令:定时任务多次执行

crontab命令语法格式:crontab [选项] [file]

crontab命令:

  • crontab命令设置的任务会循环执行
  • crond是crontab命令的守护进程,在使用crontab命令之前请保证守护进程crond已经开启
  • 在/var/spool/cron目录下会有一个当前登录账号命名的文件,里面记录了该用户创建的任务

crontab命令的访问控制:

  • 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高。
  • 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令。
  • 这个规则基本和 at 命令的规则一致,同样是 /etc/cron.allow 文件比 /etc/cron.deny 文件的优先级高,Linux 系统中默认只有 /etc/cron.deny 文件。
#检查是否安装了crontab命令
rpm -qa | grep crontab
#安装crontab
yum -y install vixie-cron
yum -y install crontabs
#启动服务
systemctl crond start
#设置服务开机启动
chkconfig --level 345 crond on
常用参数:
-u:用来设定某个用户的 crontab 服务,例如 "-u demo" 表示用户 demo用户的 crontab 服务,此选项一般有 root 用户来运行。
-e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l:显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r:从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 
-i:在删除用户的 crontab 文件时,给确认提示。

时间参数:
第一个"*"	一小时当中的第几分钟(minute)	0~59
第二个"*"	一天当中的第几小时(hour)	0~23
第三个"*"	一个月当中的第几天(day)	1~31
第四个"*"	一年当中的第几个月(month)	1~12
第五个"*"	一周当中的星期几(week)	0~7(0和7都代表星期日)
*(星号)	代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)	代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)	代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)	代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。
45 22 ***命令		在 22 点 45 分执行命令
0 17 ** 1命令		在每周一的 17 点 0 分执行命令
0 5 1,15**命令	在每月 1 日和 15 日的凌晨 5 点 0 分执行命令
40 4 ** 1-5命令	在每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 ***命令	在每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 * 1命令	在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆
#让系统在每周二的凌晨 5 点 05 分重启一次。
crontab -e
5 5 * * 2 /sbin/shutdown -r now
#删除当前用户的所有任务
crontab -r
#删除指定任务(进入编辑之后删除即可)
crontab -e
#列出任务列表
crontab -l

12.进程管理命令

12.1 ps 命令:查看系统进程信息

ps命令语法格式:ps [参数]

#查看系统进程信息
ps
#查看详细的系统进程信息
ps -ef
#查看特定的系统进程信息
ps -ef | grep mysql*

12.2 kill命令:杀死进程

#杀死指定进程号的进程(最常用)
kill -9 11177

12.3 systemctl命令:管理服务程序的运行状态

systemctl start 	  服务名称  	--- 启动服务
systemctl stop 		  服务名称  	--- 停止服务
systemctl restart 	  服务名称 	    --- 重启服务
systemctl status 	  服务名称  	--- 查看服务详细的运行状态
systemctl disable     服务名称  	--- 让服务开机不要运行
systemctl enable   	  服务名称  	--- 让服务开机运行
systemctl is-active   服务名称 	    --- 检查确认服务是否运行
systemctl is-enabled  服务名称 	    --- 检查确认服务是否开机运行

12.4 uptime命令:查看系统负载

#查看系统负载
uptime
#从左到右显示的依次为:
#当前服务器时间:    08:21:34
#当前服务器运行时长  36 min
#当前用户数          2 users
#当前的负载均衡      load average  0.00, 0.00, 0.00,分别取1min,5min,15min的均值

12.5 top命令:实时监控系统CPU

top命令语法格式:top [选项]

top命令的交互操作:

  • ? 或 h:显示交互模式的帮助;
  • P:按照 CPU 的使用率排序,默认就是此选项;
  • M:按照内存的使用率排序;
  • N:按照 PID 排序;
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
  • r:按照 PID 给某个进程重设优先级(Nice)值;
  • q:退出 top 命令;
常用参数:
-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
-b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
-n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
-p 进程PID:仅查看指定 ID 的进程;
-s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
-u 用户名:只监听某个用户的进程;

13.网络与防火墙命令

13.1 ifconfig命令:显示网络设备信息

ifconfig命令语法格式:ifconfig [参数]

补充:可以直接修改指定网卡的配置文件来达到修改信息的目的(这里以网卡eth33为例)

vim /etc/sysconfig/network-scripts/ifcfg-eth33

systemctl restart network(重启网络)

#显示网卡信息
ifconfig
#启动指定网卡
ifconfig eth1 up
#关闭指定网卡
ifconfig eth1 down
#以三种方式设置临时ip地址
#给eth0网卡配置IP地址
ifconfig eth0 192.168.1.100
#给eth0网卡配置IP地址与子网掩码
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
#给eth0网卡配置IP地址与子网掩码、广播地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.254
#删除临时ip地址
ifconfig eth0 del 192.168.1.100 netmask 255.255.255.0

13.2 ip命令:显示与操作网络配置信息

ip命令语法格式: ip [ OPTIONS ] OBJECT { COMMAND | help }

补充:ip命令基本整合了ifconfig 与 route 这两个命令,并且更加强大。用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道。

  • OPTIONS:选项。
    • -s:显示出该设备的统计数据(statistics),例如总接受封包数等;
  • OBJECT:动作对象,就是是可以针对哪些网络设备对象进行动作。
    • link:关于设备 (device) 的相关设定,包括 MTU,MAC 地址等。
    • addr/address:关于额外的 IP 设定,例如多 IP 的实现等。
    • route :与路由有关的相关设定。
#查看当前主机网卡硬件相关信息
ip link
ip link show
#查看当前主机网卡硬件相关信息(显示更详细)
ip -s link show
#关闭指定网卡
ip link set ens32 down
#开启指定网卡
ip link set ens32 up
#要更改网卡代号、MAC地址等信息的话,设定前需要先关闭该网卡,否则会不成功。
#设置指定网卡的最大帧长
ip link set ens32 mtu 1500
#设置指定网卡名
ip link set ens32 name testname
#查看当前ip地址
ip addr
ip addr show
#以更详细的方式显示ip地址
ip -s addr show
#显示指定网卡的ip信息
ip addr show ens160

ip address [add|del] [IP参数] [dev 设备名] [相关参数]

add change del flush help replace show

[add|del]:

  • add|del:进行相关参数的增加(add)或删除(del)设定。
  • show:显示详细信息。

IP 参数 :主要就是网域的设定,例如 192.168.100.100/24 之类的设定。

[dev 设备名]:IP 参数所要设定的设备,例如eth0, eth1等。

[相关参数]:

  • broadcast:设定广播位址,如果设定值是 + 表示让系统自动计算;
  • label:该设备的别名,例如eth0:0;
  • scope:这个设备的领域,默认global,通常是以下几个大类:
    • global:允许来自所有来源的连线;
    • site:仅支持IPv6 ,仅允许本主机的连接;
    • link:仅允许本设备自我连接;
    • host:仅允许本主机内部的连接;
#给ens160这块网卡再设置一个虚拟ip。
ip address add 192.168.12.23/24 broadcast + dev ens160 label ens160:test

13.3 firewall-cmd命令:防火墙相关命令

#启动防火墙
systemctl start  firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#重启防火墙
firewall-cmd --reload
#禁用防火墙
systemctl disable firewalld.service
#启用防火墙
systemctl enable firewalld.service
#查看防火墙状态
systemctl status firewalld.service 
#打开指定端口
firewall-cmd --zone=public --add-port=80/tcp(永久生效再加上 --permanent,需要重启防火墙)
#关闭指定端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
#查看打开的端口
firewall-cmd --zone=public --list-ports

13.4 ping命令:网络连通性测试命令

#指定ip测试
ping 127.0.0.1
#指定域名测试
ping baidu.com

13.5 网络配置文件

网络信息配置文件(ip、dns、网关等等):/etc/sysconfig/network-scripts/ifcfg-eth33 (以网卡eth33为例)

  • ONBOOT=yes 设置网卡开机时启动
  • BOOTPROTO=none 设置IP地址的分配方式:static(静态)、none、DHCP(动态)
  • IPADDR=192.168.3.101 设置ip地址
  • NETMASK=255.255.255.0 设置子网掩码
  • GATEWAY=192.168.3.1 设置默认网关
  • DNS1=192.168.3.1 设置主要dns
  • DNS2=8.8.8.8 设置次要dns

dns配置文件:/etc/resolv.conf (nameserver 8.8.8.8 可以设置主要和次要dns)

主机名与网络服务配置文件:/etc/sysconfig/network

  • NETWORKING=yes yes表示开启网络服务,no表示关闭网络服务。

  • HOSTNAME=test 主机名。

域名与ip映射文件:/etc/hosts

  • 127.0.0.1 localhost localhost.
  • ::1 localhost localhost.
  • 223.231.234.33 www.baidu.com
  • 可以把想要屏蔽的网址与本地回环地址映射达到屏蔽的目的

补充:

  • /etc/resolv.conf下配置nameserver 会即时生效,但是每次重启操作系统会根据ifcfg-eth0里的DNS信息把该文件重写
  • ifcfg-eth0里配置的DNS信息相当于Windows界面里你设置IP时设置的DNS,是永久的,开机重启后依然存在
  • hosts文件的作用与Windows下的hosts文件作用相同,可以用该文件设置局域网内机器IP与机器名称对应,因其优先级高
  • 修改之后需要重启网络:systemctl restart network

设置允许访问的网络地址配置文件:/etc/hosts.allow

设置禁止访问的网络地址配置文件:/etc/hosts.deny

14.磁盘管理与文件系统

磁盘放入计算机且被Linux系统识别之后,要使用磁盘存储数据还需要的操作:
1.磁盘分区:相当于房子盖好之后,根据需求分出不同的房间
2.格式化并创建文件系统:相当于装修后才能开始住人,不同的文件系统相当于不同的装修风格
3.磁盘挂载:相当于房子还得安装门、窗,才能和外界通信

**磁盘的标识:**CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]

磁盘分区的种类:

  • 主分区:数量至少1个,最多4个(如果存在扩展分区,则最多3个),可以直接使用,不可再分,相当于是一个逻辑磁盘
  • 扩展分区:0个或1个,会占用一个主分区号,不能直接使用,必须在其上建立逻辑分区后才能用。
  • 逻辑分区:可以若干个,在扩展分区中建立,可以直接使用,扩展分区的容量是所有逻辑分区容量之和(如果扩展分区被完全使用的话)。

Linux自带的文件系统:

  • centos 5:ext3
  • centos 6:ext4
  • centos 7:xfs
  • ext2:基本被废弃

14.1 fdisk命令:磁盘分区命令(小于2T的磁盘)

fdisk命令语法格式:fdisk [必要参数] [选择参数]

常用参数:
-l:列出素所有分区表
-u:与 -l 搭配使用,显示分区数目

菜单操作说明:
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能

常见用法示例:
#显示当前分区情况
fdisk -l
#检查sda磁盘情况
fdisk -l /dev/sda

对新增磁盘/dev/sdb分区

让内核重读分区表:partx -a /dev/sdb

14.2 parted命令:磁盘分区命令(可以适用大于2T的磁盘)

14.3 mkfs命令:格式化文件系统

mkfs命令语法格式:mkfs [options] [-t ] [fs-options] []

常用参数:
-t:给定文件系统的型式,Linux 的预设值为 ext2
-V:详细显示模式
-c:在制做文件系统前,检查该partition 是否有坏轨
-l:bad_blocks_file	将有坏轨的block资料加到 bad_blocks_file 里面
block 	给定 block 的大小

常见用法示例:
#在 /dev/sdb1上建一个 ext3的文件系统,同时检查是否有坏轨存在,并且将过程详细列出来
mkfs -V -t ext3 -c /dev/sdb1 
#格式化一个ext4文件系统
mkfs -t ext4 /dev/sdb1
#输入mkfs之后连续按下两次tab可以显示可以格式化的文件系统种类

14.4 free命令:显示系统内存的使用情况

free命令语法格式:free [参数]

常用参数:
-b:以Byte为单位显示内存使用情况。
-k:以KB为单位显示内存使用情况。
-m:以MB为单位显示内存使用情况。
-h:以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
-o:不显示缓冲区调节列。
-s<间隔秒数>:持续观察内存使用状况。
-t:显示内存总和列。

常见用法示例:
#以默认方式显示内存使用情况
free
#以总和的形式查询内存的使用信息
free -t
#以10s为一个周期查询内存使用情况
free -s 10

14.5 swap分区管理命令

swap分区的作用:swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当运行内存不够用的时候,操作系统会从运行内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。

补充:

  • swap分区的大小建议为运行内存大小的两倍
  • /etc/sysctl.conf 文件中设置 swappiness:vm.swappiness=10(系统根据取值决定是否使用交换分区,值越小越尽量不使用)
#第一步在新分出的磁盘分区处格式化swap分区
mkswap /dev/sdb1
#第二步激活新格式化的swap分区,若要开机自动挂载则需要修改/etc/fstab文件
swapon /dev/sdb1
#关闭新格式化的swap分区
swapoff /dev/sdb1

14.6 mount/umount命令:挂载/卸载文件系统命令

mount命令语法格式:mount -t type [-o options] device dir

umount命令语法格式:umount [设备文件名或挂载点]

mount命令常用参数:
-t:指定挂载类型
-l:显示已加载的文件系统列表
-n:加载没有写入文件“/etc/mtab”中的文件系统
-r:将文件系统加载为只读模式
-a:加载文件“/etc/fstab”中描述的所有文件系统

mount命令常见用法示例:
#输出系统挂载的所有文件系统
mount
#只输出ext4类型的文件系统
mount -t ext4
#挂载磁盘分区sdb1到目录mnt
mount /dev/sdb1 /mnt
#将文件系统以只读方式挂载
mount -r /dev/sdb1 /mnt
#将sdb1分区重新挂载为读写模式
mount /mnt -o rw,remount
#根据/etc/fstab文件启动所有挂载
mount -a

#取消sdb1的挂载
umount /dev/sdb1
或
umount /mnt

14.7 df命令:显示文件系统的使用情况命令

df命令语法格式:df [选项] [文件名]

常用参数:
-a:显示所有系统文件
-B <块大小>:指定显示时的块大小
-h:以容易阅读的方式显示
-H:以1000字节为换算单位来显示
-i:显示索引字节信息
-k:指定块大小为1KB
-l:只显示本地文件系统
-t <文件系统类型>:只显示指定类型的文件系统
-T:输出时显示文件系统类型
--sync:在取得磁盘使用信息前,先执行sync命令

常见用法示例:
#显示指定文件所在分区的磁盘使用情况
df /home
#显示文件系统的磁盘使用情况
df
#以易读的方式显示文件系统的磁盘使用情况
df -h
#显示文件类型为ext4的磁盘使用情况
df -t ext4

14.8 du命令:显示磁盘的使用情况命令

du命令语法格式:du [选项] [文件]

常用参数:
-a:输出包括文件夹和文件在内的完整统计信息
-s:仅显示总计
-h:以易读的方式显示
-c:在显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

常见语法示例:
#显示当前文件夹的磁盘占用量
du
#显示home文件夹的总磁盘占用量
du -sh /home
#显示包括文件夹内所有内容的单个大小(包括文件与文件夹)
du -ah
#显示当前文件夹所有打包压缩文件的单个磁盘占用量与总磁盘占用量
du -ch *.tar.gz
#文件和文件夹的混合求和
du -ch curl-7.34.0.tar.gz soft
#显示当前文件夹第零层与第一层文件夹的总磁盘占用量
du --max-depth=1 -h .

14.9 文件系统检查与修复命令

补充:在修复文件系统时,先取消文件系统的挂载,最好在单用户模式下修复

fsck命令:fsck.ext2,fsck.jfs,fsck.msdos,fsck.vfat,fsck.ext3,fsck.ext4,fsck.reiserfs(reiserfsck)

xfs文件系统使用的命令:xfs_check、xfs_repair

#检查xfs文件系统(先取消挂载)
xfs_check /dev/sdd(盘符); echo $?
#修复文件系统
xfs_repair /dev/sdd
#强制修复(会丢失用户数据与文件)
xfs_repair -L /dev/sdd

14.10 lsblk命令:列出所有可用块设备的信息命令

lsblk命令语法格式:lsblk [参数] [设备名]

常用参数:
-a:显示所有设备
-b:以bytes方式显示设备大小
-m:显示权限信息

常见用法示例:
#以默认方式显示所有块设备(非空)
lsblk
#显示所有块设备包括空设备
lsblk -a
#以字节数显示块空间大小
lsblk -b
#显示块设备的属主
lsblk -m
#显示特定块设备
lsblk /dev/sda

14.11 sync命令:将内存缓冲区的内容写入磁盘命令

#强制将缓冲区中数据写回磁盘中,常在Linux系统关机之前使用以防止数据丢失
sync

15.常用快捷键

ctrl + a  移动到行首
ctrl + e  移动到行尾
ctrl + u  剪切光标之前的字符
ctrl + k  剪切光标之后的字符
ctrl + y  粘贴
ctrl + l  清屏
ctrl + c  强行中断当前程序
ctrl + z  将当前程序放入后台
ctrl + d  注销
ctrl + s  暂停该终端
ctrl + q  重新启动该终端
tab		  自动补全

你可能感兴趣的:(linux,vim,centos)