本文全部的命令均是在CentOS 7
操作系统下执行。
目录结构
/usr/local 重点
另一个给主机额外安装软件所安装的目录
,一般通过编译源码方式安装的程序,如nginx.
/bin 重点
存放常用的命令
- /usr/bin
- /usr/local/bin
/sbin 重点
存放系统管理员使用的系统管理程序
- /sbin
- /usr/sbin
/boo 重点
存放启动图linux是使用的一些核心文件,包括一些连接文件以及镜像文件。
/etc 重点
系统管理所需要的配置文件和子目录
/usr 重点
非常重要的目录,用户的很多应用程序和文件都存放在该目录
/var 重点
该目录不断扩充着东西,喜欢将经常被修改的目录放在这个目录下。
/dev
设备管理目录,所有硬件以文件形式存储。
/opt
给主机额外安装软件所摆放的目录。如安装oracle数据库,默认为空。
/tmp
存放临时文件的目录。
/lib
系统开机所需要的最基本的丰台连接共享库。
linux系统
有且只有一
个根目录/linux各个目录存放的内容是规划好的,
不要乱放文件
。linux是以文件的形式管理我们的设备,在linux系统,
一切皆为文件
。
远程登录
ssh连接远程服务器
在终端输入ssh 连接的用户名@服务器IP
按下回车并输入服务器密码即可。
1 | # 举个栗子 |
sftp上传下载远程服务器文件
在终端输入sftp 连接的用户名@服务器IP
按下回车并输入服务器密码即可。
1 | # 举个栗子 |
下载文件
输入get 服务器文件 本地目录
,将服务器上的指定文件下载大本地的指定目录下。若不指定本地目录,则默认下载到连接sftp前所在的本地目录。即我若在a目录下连接sftp,输入get temp.txt
,文件将默认下载至a目录下

上传文件
输入put 本地文件 服务器目录
,将本地指定高度文件上传至服务器指定目录。

Vi和Vim编辑器
Vim的4个模式
- 正常模式 (Normal-mode) :正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作
- 插入模式 (Insert-mode):在正常模式中按下
i, I, a, A
等其中一个键 - 命令模式 (Command-mode):在正常模式中,先按下
ESC
再按下:(英文冒号)
键,会进入命令模式 - 可视模式 (Visual-mode):在正常模式按下
v, V
其中一个键可以进入可视模式。
常用快捷键
复制粘贴
正常模式
复制光标所在当前行 yy
,复制n行则nyy
,粘贴p
可视化模式
- 将光标移动到要复制的位置,按
V
进入可视化模式。 - 将光标移动到要复制的结束的位置,按下
y
,复制。(此时vim自动选中要复制的内容并复制,然后退出可视化)。 - 将光标移动到要粘贴的地方,按
p
粘贴。
显示行号
set nu
显示行号
set nonu
不显示行号
删除相关
首先前提是在正常模式或可视化模式下操作
x
删除当前光标中的一个字符
dd
直接删除当前行
ndd
直接删除当前行开始的n行
撤销和重做
u
撤销上一步的操作(undo)
ctrl+r
重做撤销的步骤(redo)
查找和替换
直接在正常模式下
按
/
进入查找模式,后面接要查找的字符串,例如/hello
。vim会跳转到匹配的第一个,然后按下
n
查找下一个,按下N
查找上一个。按
?
向上搜索,随后的按n
命令向上搜索,按N
向下搜索,其他和/
一样按
r
再按其他一个字符
,会将光标所在的字符替换为你输入的字符按
R
再输入一串字符串,最后按下ESC
键会将光标所在的字符替换为你输入的字符串
光标移动
在正常模式下使用
hjkl
分别对应左下上右键,当然也可以使用↑↓←→
方向键。
fa
向后移动到字符a处
Fa
向前移动到字符a处
w 或 shift →
向后移动一个英语单词 注意:中文不生效
b 或 shift ←
向前移动一个英语单词 注意:中文不生效
:123
移动到第123行
^
移到当前行的第一个非空字符
$
移到当前行的最后一个字符
gg
移动到文本开头处
G
移动到文本结束处
保存和退出
在命令模式
下使用
:w
保存文件但不退出vi
:w file
将修改保存在file中但不退出vi
:wq或ZZ或:x
保存文件并退出vi
:q!
不保存文件,退出vi
:e!
放弃所有修改,从上次保存文件开始再编辑
更多可查看vim常用快捷键
关机重启
关机、重启命令
shutdown
可用于停止,关闭电源或重新启动计算机。shutdown -h 16:47 下午4点47分关机
shutdown -h now 立即关机
shutdown -h +n n分钟后关机
shutdown -r 16:47 下午4点47分重启
shutdown -r now 立即重启
shutdown -r +n n分钟后重启
时间字符串的格式可以是“ hh:mm”,以小时/分钟为单位,以24小时时钟格式指定执行关闭的时间。 替代地,它可以是语法“ + m”,表示从现在起指定的分钟数m。 “ now”是“ +0”的别名,即用于触发立即关闭。 如果未指定时间参数,则表示“ +1”。
halt
直接使用,关机。reboot
直接使用,重启。
用户管理
创建用户
使用useradd [可选参数] 用户名
命令创建用户。
useradd xiaoming
创建用户xiaoming,同时创建xioaming的家目录(即/home/xiaoming),并将xioaming放入该用户组中。
useradd -d /home/xiaojun xiaojun
创建用户xiaojun,同时创建不存在的家目录(即/home/dog),并将xiaojun放入该用户组中。
`useradd -g test junjun
创建用户junjun,同时创建一个已存在的test用户组并将junjun放入该用户组。
指定用户密码或修改密码
使用passwd 用户名
对指定用户进行指定密码或修改密码。
删除用户
userdel 用户名
删除用户但保留家目录(即 /home/用户名)推荐方式
userdel -r 用户名
删除用户及其家目录
查看用户
id 用户名
查询指定用户名的信息(用户uid,所在用户组id)
切换用户
su 用户名
切换至指定的用户
exit
退出切换的用户,返回到原来的用户
当从低权限用户
切换至高权限用户
时需要密码
当从高权限用户
切换至低权限用户
时不需要密码
查看当前用户
whoami
或who am i
查看当前登录的用户
用户组
创建用户组
groupadd 组名
创建指定组名的用户组
修改用户所属的组
usermod -g 用户组名 用户名
修改指定用户名的用户将其所属的用户组更改为指定的用户组。
用户和组的配置文件
/etc/shadow
口令的配置文件。每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/ect/passwd
用户的配置文件,记录用户的各种信息。每行含义:用户名:口令:用户标识符:组标识符:注释性描述:家目录:登录shell
举个栗子:
junjun:x:1002:1002::/home/dog:/bin/bash
口令的值为x代表加密了。/etc/group
组的配置文件,记录linux包含组的信息。每行含义:组名:口令:组标识符:组内用户列表
常用命令
运行级别
init level | systemctl target | comment |
---|---|---|
0 | shutdown.target | 关机 |
1 | emergency.target | 单用户(用于找回密码) |
2 | rescure.target | 多用户无网络 |
3 |
multi-user.target |
多用户有网络 常用 |
4 | 无 | 无 |
5 |
graphical.target |
图形界面 常用 |
6 | reboot.target | 重启 |
设置运行级别
CentOS 6及之前的版本中,系统运行级别通过/etc/inittab文件进行设置和控制,但在CentOS 7中,对这个文件的设置将不会对系统运行级别产生影响。
1)语法:systemctl [command] [unit.target]
2)命令及参数:
command部分
get-default :获取当前的target;
set-default :将默认运行级别设置为指定的target;
isolate :切换至指定的运行级别。
unit.target部分:为上面表格中给出的运行级别
1 | # 举个栗子 |
参考博客: centos7系统运行级别简介
man
基本语法:man [命令或配置文件]
1 | man pwd # 查看pwd命令的用法 |

⚠️注意:CentOS7下使用要查的命令 --help
可以查看该命令的中文帮助文档
!!
例如:ls –help
pwd
显示当前工作目录的绝对路径
基本用法:pwd [options]
ls
查看当前目录下的所有内容信息
基本用法:ls [options] [目录或文件]
常用选项:
-a 显示当前目录所有文件和目录,包括隐藏文件
。
-l 以长列表的形式显示信息
1 | # 举个栗子 |
cd
切换目录
基本用法:cd [参数]
常用参数:
绝对路径
1
cd /home/root/ # 切换到root的家目录,从根目录 ‘/’ 开始写
相对路径
1
2
3
4
5cd ~ # 切换到当前用户的家目录
cd ~/a/ # 切换到当前用户家目录的a目录下
cd ../ # 切换到当前目录的上一级目录
cd ../b/ # 切换到当前目录的上一级目录的b文件夹下
cd .. # 等价cd ../
mkdir
用于创建目录
基本用法:mkdir [options] 要创建的目录
1 | mkdir a # 在当前目录下创建一个a目录 |
rmdir
用于删除空目录
基本用法:rmdir [options] 要删除的目录
rmdir删除的目录下有内容的话,是无法删除的!!!
若需要删除非空目录,请使用rm -rf 要删除的非空目录
touch
用于创建一个空文件
基本用法:touch 文件名称
1 | touch test.txt #创建一个空的test.txt文件 |
cp
用于拷贝文件至指定目录
基本用法:cp [options] source dest
常用选项:
-r 表示递归复制整个文件夹下的所有内容
-f 覆盖已存在的同名文件,不在提醒是否确认删除。
1 | # 举个栗子 |
rm
用于删除文件或目录
基本用法:rm [options] 要删除的的文件或目录
常用选项:
-r 表示递归删除整个文件夹下的全部文件
-f 表示强制删除,不提醒是否确认删除。
1 | rm test.txt # 删除test.txt文件 |
mv
用于移动文件和目录以及重命名文件
基本用法:
- `mv 文件1 文件2` 将文件1重命名为文件2
- `mv 文件或目录 目录2` 将文件或目录移动至目录2处
1 | # 举个栗子 |
cat
以只读的方式查看文件内容
基本用法:cat [options] 要查看的文件
常用选项:
-n 显示行号
1 | # 举个栗子 |
more
more 是基于vim编辑器的文本过滤器,以全屏幕的形式按页显示文件的内容。more 中还内置的很多快捷键。
基本用法:more 要查看的文件
- 按空格键: 逐页查看文件内容
- 按b键: 返回上一页查看文件内容
- 按enter键:逐行查看文件内容
1 | # 举个栗子 |
less
与more命令功能类似,但是kess并不是一次将整个文件的内容全部去取出来,而是根据显示的内容进行按需加载,对于显示大型文件有较高的效率
。
> 和 >>
>
: 输出重定向只指定文件,文件不存在则创建。(覆盖写
,即文件内有内容则被覆盖)
>>
:追加内容至指定文件的尾部
1 | # 举个栗子 |
cal
用于显示当前日期

echo
用于输出内容到控制台
基本用法:echo [options] 要输出的内容
1 | # 举个栗子 |
head
用于查看文件的头部,默认显示文件前10行内容
基本用法:head [options] 要查看的文件
1 | # 举个栗子 |
tail
用于查看文件的尾部,默认显示文件后10行内容
1 | tail a.txt # 显示a.txt的后10行内容 |
ln
软链接,也叫符号链接。类似Windows下的快捷方式,Mac OS下的替身。用于连接到另外一个文件的路径和名称。
基本用法:ln [源文件或目录] [软链接名]
1 | # 举个栗子 |
删除软链接:rm -rf linktob
另:当我们进入软链接,使用pwd
查看当前目录时,会发现我们还是在软链接目录下
history
用于查看曾经执行过的命令
基本用法:history [options] 参数
1 | # 举个栗子 |
date
用于显示当前日期即时间
1 | date # 显示标准时间 |

cal
用于显示日历
基本用法:cal [options]
1 | # 举个栗子 |
find
用于从指定目录下递归遍历其各个子目录,将满足条件的文件或目录显示在终端上。
基本用法:find [搜索范围] [options]
常用选项:
-name 按照指定的文件名查找文件
-user 按照指定定的用户名查找该属于该用户名的文件
-size 按照指定的文件的大小查找文件
1 | # 举个栗子 |
size模式下文件单位如下:

locate
可以快速定位文件路径,locate指令利用实现建立系统中的文件名称和路径的locate数据库,实现快速定位文件。
locate无需遍历整个文件系统,查询速度快,为了保证查询结果的准确度,管理员需要定时更新locate数据库。
基本用法:locate 要搜索的文件
1 | # 举个栗子 |
第一次运行lcoate指令前,需要使用updatedb
建立数据库。之后需定时更新数据库以确保查询结果的准确性。
grep
用于过滤查找,管道符|
,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本用法:gerp [options] 查找内容 源文件
常用选项:
-n 显示匹配行及行号
-i 忽略字母大小写进行查找
1 | # 举个栗子 |

组管理
- 用户配置文件(用户信息)位置:
/etc/passwd
- 口令配置文件(密码和登录信息)位置:
/etc/shadow
- 组配置文件(组信息)位置:
/etc/group
在 linux 中的每个用户必须属于一个组,不能独立于组外。
在 linux 中每个文件
有所有者
、所在组
、其它组
的概念。
创建组
创建组:groupadd 组名
1 | # 举个栗子 |
所有者
一般为文件/目录的创建者,谁创建了该文件,就自然的成为该文件的所有者。
查看所有者
查看文件/目录的所有者:ls -ahl

修改所有者
修改文件/目录所有者:chown 用户名 文件名/目录
⚠️ 注意:chown
命令只能改变文件/目录的所有者,无法改变其所在组
1 | # 举个栗子 |

所在组
查看所在组
查看文件/目录的所有者:ls -ahl
修改所在组
修改文件/目录所在组:chgrp 用户组 文件名/目录
1 | # 举个栗子 |
其他组
即除去文件的所有者和所在组的用户外,其他用户的文件都是属于其他组。
改变用户所在组
基本用法:
usermod -g 用户组 用户
修改用户的所在组usermod -d 目录 用户
改变用户登录后的初始所在目录
权限管理
文件类型

第 0 位表示的是文件类型(d, - , l , c , b)
-
表示是普通文件d
表示是目录l
表示是软链接c
表示字符设备,如鼠标、键盘等。b
表示块文件,如硬盘等。
文件所有者权限

第 1-3 位表示的是该文件的所有者拥有该文件的权限。
-
表示没有权限r
表示有读权限,可用数字4
表示w
表示有写权限,可用数字2
表示x
表示对文件夹有进入目录
的权限,对文件有可执行
的权限,,可用数字1
表示
文件所在组的用户的权限

第 4-6 位表示的是文件所在组的用户拥有该文件的权限
-rwx
分别所代表的含义同上。
其他用户拥有该文件的权限
第 7-9 位表示的是其他用户组的用户拥有该文件的权限
-rwx
分别所代表的含义同上。
rwx权限详解
rwx 作用到文件
[ r ]代表可读(read):可以读取,查看
[ w ]代表可写(write):可以修改,但不代表可以删除该文件
[ x ]代表可执行(execute):可以被执行
⚠️注意:拥有对文件的写权限时,不一定就代表可以删除该文件。
删除一个文件的前提条件是对该文件所在的目录有写权限
,才能删除该文件.
rwx 作用到目录
[ r ]代表可读(read): 可以读取,ls 查看目录内容
[ w ]代表可写(write): 可以修改,目录内文件的创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
ls -l
命令输出结果的含义详解
这里只介绍红框内的内容,其余的前面已介绍过。

以第一行a目录
为例:
- 2 表示对于目录表示该目录下的子目录数,对于文件表示是硬链接
- tom 表示文件/目录的所有者
- hmj 表示文件/目录的所在组
- 4096 表示对于文件表示文件的大小,单位字节。
目录都是用固定值4096表示
。 - 8月 3 22:50 表示最后对文件的修改时间
- a 表示文件/目录名
修改权限
使用chmod
命令可以修改我呢间或目录的权限。
基本用法:
使用
+
增加,-
减少,=
变更权限1
2
3
4
5
6
7
8# 举个例子
# u 表示文件的所有者
# g 表示文件所在组的其他用户
# o 表示其他组的用户
# a 表示所有用户
chmod u=rwx,g=r,o=r a.txt # 修改a.txt文件的权限,只有文件所有者能读写执行,其他用户都只读。
chmod u+x a.sh # 增加a.sh文件所有者对其的执行权限。
chmod u-x a.sh # 删除a.sh文件所有者对其的执行权限。使用数字变更权限
1
2
3
4
5
6
7
8# 举个例子
# 4 表示读权限
# 2 表示写权限
# 1 表示可执行或可进入目录权限
# 0 表示无权限
chmod 744 a.txt # 修改a.txt文件的权限,只有文件所有者能读写执行,其他用户都只读。
chmod 700 a.sh # 修改a.sh文件权限,只有文件所有者能读写执行,其他用户无权限。
修改文件所有者和所在组
chown 用户 文件
修改文件的所有者chgrp 组名 文件
修改文档的所在组chown 用户:所在组 文件
同时修改文件的所有者和所在组
1 | # 举个栗子 |
任务调度
定时任务调度
使用crontab
命令让系统在某个时间执行的特定的命令或程序,如数据库的备份等。
基本用法:crontab [options]
常用选项:
-e
用于编辑crontab定时任务-l
用于查询crontab定时任务-r
用于删除crontab定时任务
crontab文件的格式
crontab文件的格式为:M H D m d command
其中:
M
表示分钟,取值范围为0-59H
表示小时,取值范围为0-23D
表示一月中的第几天,取值范围为1-31m
表示月,取值范围为1-12d
表示 一周中的星期几,取值范围为0-7command
表示要执行的命令,如echo,cd等等。
这里的d
的取值中0和7均为星期天
设置定时任务
1 | # 举个栗子 |
进程管理
查看进程
使用ps
指令查看系统中正在执行的进程信息。
基本用法:ps [options]
常用选项:
ps -ef
用于显示全部的进程信息。Unix语法ps aux
用于显示全部的进程信息。BSD语法ps -ef|grep name
与管道符同用,过滤进程信息,只查看name相关的进程信息。1
2
3
4# 举个栗子
ps -ef # 查看全部信息
ps aux # 查看全部信息
ps -ef|grep nginx # 只查看nginx相关的进程信息
终止进程
使用kill
指令通过进程ID
强制终止系统中正在执行的进程。
使用killall
指令通过进程名称
强制终止系统中正在执行的多个
进程。
基本用法:
kill [options] PID
用于将指定的进程PID强制终止。killall [options] PName
用于将指定名称的进程强制终止。
常用选项:kill -9 PID
立即将指定的PID的进程强制杀死。
1 | # 举个栗子 |
系统与服务管理
查看服务
方式一
第一步,在终端输入setup
后回车
第二步,进入系统服务

第三步,使用上下箭头移动服务,空格键选择/取消自启动的服务

第四步,使用tab
键切换菜单,按下enter
确认后退出
方式二 已弃用
可以查看/etc/init.d/目录下,但目前我使用的CentOS7.3已明确提示我改传统的脚本初始化方式已被弃用,并由 systemctl
代替。

service
指令
服务本质就是在后台运行的进程,监听某个端口,等待其他程序的请求,故亦称为守护进程
。
service
指令基本用法:service 服务名 [reload,stop,start,status]
1 | # 举个栗子 |
systemctl
systemctl
指令 可用于检查和控制系统与服务管理器的状态
systemctl [options] [reload,stop,start,status] 服务名
1 | # 举个栗子 |
防火墙
查看防火墙状态
1 | firewall-cmd --state # 查看防火墙状态 |
查看防火墙开启的端口
1 | firewall-cmd --zone=public --list-ports # 查看防火墙开启的端口 |
开放端口
--permanent
表示永久开放该端口,否则机器重启后配置失效。
1 | firewall-cmd --zone=public --add-port=80/tcp --permanent # 永久开放80端口 |
重新加载防火墙
1 | firewall-cmd --reload # 重新加载配置 |
⚠️注意:我们在对防火墙更改后一定要重新加载防火墙,否则配置将不会生效。