文章目录
一、基础指令1、ls指令2、pwd指令3、cd指令4、mkdir指令5、touch指令6、cp指令7、mv指令8、rm指令9、输出重定向10、cat指令11、vim指令12、命令行快捷操作 二、进阶指令1、df指令 (查看磁盘的空间)2、free指令(查看内存使用情况)3、head指令4、tail指令5、less指令6、wc指令(统计文件内容信息(包含行数、单词数、字节数))7、date指令(时间日期(读取、设置))8、cal指令(日历)9、clear/ctrl + L指令10、管道 | grep11、hostname指令12、id指令13、whoami指令14、ps -ef指令(服务器的进程信息)15、top指令(服务器的进程占的资源)16、du -sh指令(查看目录的真实大小)17、find指令(查找文件)18、systemctl指令(管理系统启动和管理系统服务的相关命令)19、kill指令(结束进程)20、ifconfig指令(网卡相关)21、reboot,shutdown指令(重启关机)22、uptime指令(计算机从开机到现在运行的时间)23、uname指令(打印系统信息,当前操作系统版本信息)24、netstat -tnlp指令(网络连接状态)25、man指令(包含了Linux中全部命令手册) 三、vim编辑器1、vim三种模式2、命令模式2.1 光标移动到首行2.2 翻屏2.3 选择、复制、删除、编辑、保存2.4 可视化复制2.5 剪切/删除2.6 撤销/恢复2.6 光标的快速移动 3、末行模式3.1 保存操作(write)3.2 退出(quit)3.3 保存并退出3.4 强制 (!)3.5 搜索/查找/替换3.6 替换3.7 显示行号(临时)3.8 代码着色 4、vim的配置 四、自有服务1、用户与用户组管理1.1 添加用户1.2 修改用户1.3 设置密码1.4 删除用户 2、用户组管理2.1 用户组添加2.2 用户组编辑2.3 用户组组删除 3、网络设置4、ssh服务5、设置主机名5.1 临时设置主机名(立竿见影),需要切换用户使之生效5.2 永久设置主机名(需要重启) 6、查看开机启动项7、防火墙服务firewalld8、rpm、yum管理8.1 rpm命令8.2 yum命令 9、cron/crontab定时任务10、环境变量11、压缩解压 五、权限管理5.1 权限介绍5.2 权限设置
一、基础指令
1、ls指令
含义:ls (list)
#用法1:ls#含义:列出当前工作目录下的所有文件/文件夹的名称
#用法2:ls 路径#含义:列出指定路径下的所有文件/文件夹的名称
关于路径: 路径可以分为两种:相对路径、绝对路径。 相对路径:相对首先得有一个参照物(一般就是当前的工作路径);
相对路径的写法:在相对路径中通常会用到2个符号 “./”【表示当前目录下】、“…/”【上一级目录下】。
绝对路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径;
#用法3:ls 选项 路径#含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。#常见的语法:ls -l 路径ls -la 路径
选项解释:
-l:表示list,表示以详细列表的形式进行展示
-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
#用法4:ls -lh 路径#含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示
常用选项:
-a
:显示路径下的所有目录和文件,包括隐藏文件(以.开头,其中.和…不是文件)
-A
:显示路径下的所有目录和文件,不包括.和…
-d
:只显示目录本身,不展开,一般与 -l 一起使用
-l
:显示路径下目录和文件的详细信息(ll=ls -l)
-r
:反向排序
-R
:递归显示
-S
:以文件大小排序显示,默认从大到小,与-r一起使用后按从小到大的顺序排序
-t
:按mtiem时间排序显示,默认是从近到远的顺序排序(其中mtime为文件数据修改时间)
-cl
:按ctime时间排序,默认是从近到远的顺序排序(其中ctime为修改源数据的时间)
-ul
:按atime时间排序,默认是从近到远的顺序排序(其中atime为访问文件的时间)
2、pwd指令
#用法:pwd#含义:(print working directory,打印当前工作目录)
3、cd指令
#用法:cd路径#含义:(change directory,改变目录)#作用:用于切换当前的工作目录的
#在Linux中有一个特殊的符号“~”,表示当前用户的home目录。切换的方式:cd ~#或者直接 cd 也可以返回当前用户的home目录
#返回上次所在目录cd -
4、mkdir指令
#用法1:mkdir 路径 #含义:(make directory,创建目录)
#用法2:mkdir -p 路径#含义:当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
#用法3:mkdir 路径1 路径2 路径3 …#含义:【表示一次性创建多个目录】
5、touch指令
#用法1:touch 文件路径#作用:创建文件#含义:路径可以是直接的文件名也可以是路径
#用法2:touch 文件路径1 文件路径2 ...#作用:创建多个文件#含义:路径可以是直接的文件名也可以是路径
6、cp指令
#用法1:cp 被复制的文档路径 文档被复制到的路径#含义:copy,复制#作用:复制文件/文件夹到指定的位置
1.Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
2.当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
7、mv指令
#用法1: mv 需要移动的文档路径 需要保存的位置路径 #含义:move,移动,剪切,(重命名) #作用:移动文档到新的位置
在Linux中重命名的命令也是mv,语法和移动语法一样
8、rm指令
#用法1:rm 选项 需要移除的文档路径#含义:rm ,remove,移除、删除#作用:移除/删除文档#选项:-f:force,强制删除,不提示是否删除-r:表示递归
在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入“y/yes”,否则输入“n/no”按下回车。
如果在删除的时候不想频繁的确认,则可以在指令中添加选项“-f”,表示force(强制)。
#用法2:rm -rf Linux*#含义:删除当前目录下以Linux开头的文件
称之为通配符,意思表示任意的字符,Linux,则表示只要文件以Linux开头,后续字符则不管
9、输出重定向
#用法:正常执行的指令 > 或者 指令>> 文件的路径ll > t.txtll >> t.txt#文件可以不存在,不存在则自动新建
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
‘>’:覆盖输出,会覆盖掉原先的文件内容
‘>>’:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
10、cat指令
#用法1:cat 文件的路径#作用:cat有直接打开一个文件的功能。
#用法2:cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径#作用:cat还可以对文件进行合并
#用法3:#清空文件内容cat /dev/null > filename.txt
11、vim指令
#用法1:vim 文件的路径#作用:打开一个文件(可以不存在,也可以存在)
退出打开的文件: 在没有按下其他命令的时候,按下shift+英文冒号,输入q,按下回车即可
12、命令行快捷操作
12.1光标快速切换:
ctrl+a
: 切换至行首
ctrl+e
: 切换至行尾
ctrl+k
: 删除光标所在处至行尾的字符
ctrl+u
: 删除当前光标前面的字符
ctrl+y
: 粘贴最后一次被删除的单词
Tab
:命令行自动补全。
使用 shell 提示时可使用这一方式。 键入命令或文件名的前几个字符,然后按 [Tab] 键,
它会自动补全命令或显示匹配键入字符的所有命令
二、进阶指令
1、df指令 (查看磁盘的空间)
#用法:df -h#作用:查看磁盘的空间#-h表示以可读性较高的形式展示大小
2、free指令(查看内存使用情况)
#用法:free -m#作用:查看内存使用情况#-m表示以mb为单位查看
3、head指令
#用法:head -n 文件路径 #n表示数字#作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
4、tail指令
#用法1:tail -n 文件的路径 #n同样表示数字#作用:查看一个文件的未n行,如果n不指定默认显示后10行
#用法2:tail -f 文件路径#该命令一般用于查看系统的日志比较多。可以通过tail指令来查看一个文件的动态变化内容【变化的内容不能是用户手动增加的】
5、less指令
#用法1:less 需要查看的文件路径#作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多,在退出的只需要按下q键即可。
6、wc指令(统计文件内容信息(包含行数、单词数、字节数))
#用法:wc -lwc 需要统计的文件路径#选项-l:表示lines,行数-w:表示words,单词数 依照空格来判断单词数量-c:表示bytes,字节数
7、date指令(时间日期(读取、设置))
#用法1:date#输出的形式:2023年 01月 23日 星期一 14:46:11 CST
#用法2:date +%F#输出形式:2023-01-23
#用法3:date +"%F %T"或者date +"%Y-%m-%d %H:%M:%S" #输出形式:2023-01-23 15:18:38
#用法4:# 时间格式转换:date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"# 输出结果2009/12/12 00:00.00
#设置全部时间date -s "2012-05-23 01:01:01" #或者date -s "20120523 01:01:01"
#查看日期、时间、时区等信息timedatectl#设置日期&时间timedatectl set-time "YYYY-MM-DD HH:MM:SS"#设置时区timedatectl set-timezone Asia/Shanghai
8、cal指令(日历)
#用法1:cal #作用:直接输出当前月份的日历
#用法2:cal -3#作用:输出上一个月+本月+下个月的日历
#用法3:cal -y 2022 #作用:输出某一个年份的日历
9、clear/ctrl + L指令
#用法:clear#或者快捷键:ctrl + L#作用:清除终端中已经存在的命令和结果(信息)。
该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
10、管道 | grep
管道符:| 作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。 grep指令:主要用于过滤
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
#用法:ls / | grep y#作用:需要通过管道查询出根目录下包含“y”字母的文档名称。
#搜索某个文件里面是否包含字符串abcgrep "abc" /home/text.log#检索时需要忽略大小写问题,可以使用参数“-i”grep -i "abc" /home/text.log
11、hostname指令
作用:操作服务器的主机名(读取、设置)
#用法1:hostname#含义:表示输出完整的主机名
#用法2:hostname -f#含义:表示输出当前主机名中的FQDN(全限定域名)
12、id指令
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
#用法1:id#含义:默认显示当前执行该命令的用户的基本信息
#用法2:id 用户名#含义:显示指定用户的基本信息
13、whoami指令
作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志。
#用法:whoami
14、ps -ef指令(服务器的进程信息)
#用法1:ps -ef#作用:主要是查看服务器的进程信息#选项含义:-e:等价于“-A”,表示列出全部的进程-f:显示全部的列(显示全字段)
#用法2:ps -ef|grep java#作用:使用管道过滤查看java的进程状态
列的含义:
UID:该进程执行的用户id;
PID:进程id;
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
C:Cpu的占用率,其形式是百分数;
STIME:进行的启动时间;
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间;
CMD:该进程的名称或者对应的路径;
15、top指令(服务器的进程占的资源)
#用法:top#退出命令:按下q键
只查看某个进程的信息
#1.获取nginx的pidpidof nginx
#2.top指定查看PIDtop -p 8304,8303#或者top -p8304 -p8303
列的含义:
PID:进程id;
USER:该进程对应的用户;
PR:优先级;
VIRT:虚拟内存;
RES:常驻内存;
SHR:共享内存;
计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行); %CPU:表示CPU的占用百分比;
%MEM:表示内存的占用百分比;
TIME+:执行的时间;
COMMAND:进程的名称或者路径;
选项:
-p
:只显示某个进程的信息
-d
:设置刷新时间,默认是5s
-c
:显示产生进程的完整命令,默认是进程名
-o
:指定要排序的字段,比如top -o PID 按照PID从大到小,top -o -PID 按照PID从小到大
-n
:指定刷新次数,比如 top -n 3,刷新输出3次后退出
-b
:以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i
:不显示任何闲置 (idle) 或无用 (zombie) 的进程
-u
: 查找特定用户启动的进程
在运行top的时候,可以按下方便的快捷键:
h
: 按下h键,会显示帮助画面
c
: 按下c键,会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认显示
f
: 按下f键,可以选择需要展示的项目
M
: 按下M键,根据驻留内存大小(RES)排序
P
: 按下P键,根据CPU使用百分比大小进行排序
T
: 按下T键,根据时间/累计时间进行排序
E
: 按下E键,切换顶部内存显示单位
e
: 按下e键,切换进程内存显示单位
l
: 按下l键,切换显示平均负载和启动时间信息。
t
: 按下t键,切换显示CPU状态信息
m
: 按下m键,切换显示内存信息
R
: 按下R键,更改为从小到大排序
k
: 直接输入k,在输入进程的PID号,终止指定进程
16、du -sh指令(查看目录的真实大小)
#用法:du -sh 目录路径#选项含义:-s:summaries,只显示汇总的大小-h:表示以高可读性的形式进行显示
17、find指令(查找文件)
#用法1:find 路径范围 选项 选项的值#选项:-name:按照文档名称进行搜索(支持模糊搜索)-type f:按照文档的类型进行搜索文档类型:f 普通文件,d 表示文件夹
#用法2:find /home -name "*.txt"#作用:在/home目录下查找以.txt结尾的文件名
#用法3:find /etc -type d#作用:搜索/etc/目录下所有的文件夹
18、systemctl指令(管理系统启动和管理系统服务的相关命令)
systemctl start [unit type] 启动服务
systemctl stop [unit type] 停止服务
systemctl restart [unit type] 重启服务
systemctl enable [unit type] 设置服务开机启动
systemctl disable [unit type] 设备服务禁止开机启动
#用法1:#启动网络服务systemctl start network.service#停止网络服务systemctl stop network.service#重启网络服务systemctl restart network.service#查看网络服务状态systemctl status network.serivce
#用法2:systemctl list-units --type=service #作用: 查看所有已启动的服务
systemctl命令 | 说明 |
---|---|
systemctl | 列出所有的系统服务 |
systemctl list-units | 列出所有启动unit |
systemctl list-unit-files | 列出所有启动文件,开机启动项 |
systemctl list-units --type=service | 列出所有已启动的服务 |
systemctl list-units --type=service -all | 列出所有service类型的unit |
systemctl list-units --type=service -all | grep mysqld | 列出mysql的服务 |
systemctl list-units --type=target -all | 列出所有target |
#用法3:#查看网络服务是否启动systemctl is-active network.service#检查网络服务是否设置为开机启动systemctl is-enabled network.service#停止cups服务systemctl stop cups.service#注销cups服务systemctl mask cups.service#查看cups服务状态systemctl status cups.service#取消注销cups服务systemctl unmask cups.service
19、kill指令(结束进程)
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
#用法1:kill 进程PID#语法需要配合ps一起使用,先查到进程pid
#用法2:killall 进程名称#与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall
20、ifconfig指令(网卡相关)
#用法:ifconfig#作用:获取网卡信息
21、reboot,shutdown指令(重启关机)
#用法:reboot#重启#立刻关机shutdown -h now #立刻重启shutdown -r now #在18:30关机shutdown -h 18:30 #将在10分钟后关闭,且会显示在登录用户的当前屏幕中shutdown -h 10 #指定10分钟后关机,同时送出警告信息给登入用户:shutdown +10 "System will shutdown after 5 minutes"#取消关机计划 shutdown -c
22、uptime指令(计算机从开机到现在运行的时间)
作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间)
#用法:uptime
23、uname指令(打印系统信息,当前操作系统版本信息)
作用:获取计算机操作系统相关信息
#用法1:uname#作用:获取操作系统的类型
#用法2:uname -a#作用:表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
#用法3:cat /proc/version cat /etc/issue cat /etc/redhat-release#作用:Linux查看当前操作系统版本信息 查看版本当前操作系统发行版信息
24、netstat -tnlp指令(网络连接状态)
#用法:netstat -tnlp
选项说明:
-t:表示只列出tcp协议的连接;
-n:表示将地址从字母组合转化成ip地址,将协议转化成端口号来显示;
-l:表示过滤出“state(状态)”列中其值为LISTEN(监听)的连接;
-p:表示显示发起连接的进程pid和进程名称;
#检查 8080 端口被哪个进程占用netstat -lnp|grep 8080
#查看本地端口打开状态,该命令会显示当前所有正在监听的TCP和UDP端口,以及与之相关的进程信息。netstat -tunlp
25、man指令(包含了Linux中全部命令手册)
作用:manual,手册(包含了Linux中全部命令手册,英文)
#语法:man cp#查询cp命令的手册,退出按下q键
三、vim编辑器
1、vim三种模式
Vim中存在三种模式(大众的认知):命令模式、编辑模式(输入模式)、末行模式(尾行模式)。
命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
编辑模式:在该模式下可以对文件的内容进行编辑;
末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
#Vim的打开文件的方式: vim 文件路径 #作用:打开指定的文件 vim +数字 文件的路径 #作用:打开指定的文件,并且将光标移动到指定行 vim +/关键词 文件的路径 #作用:打开指定的文件,并且高亮显示关键词#退出方式:输入:q按下回车即可
2、命令模式
2.1 光标移动到首行
n<Space>
:n表示整数,按下数字后再按空格,光标向右移动n个字符
0 或 Home
:光标移动到本行开头
$ 或 End
:光标移动到本行末尾
gg
:光标移动到第一行
G
:光标移动到最后一行
:n 或 nG
:n为整数,光标移动到第n行
n<Enter>
:n为整数,光标向下移动n行
2.2 翻屏
PageUp
: 上页
PageDown
: 下页
2.3 选择、复制、删除、编辑、保存
v
:选中文本
d
:删除选中的文本
dd
:删除当前行
y
:复制选中的文本
yy
:复制当前行
p
:将复制的数据在光标的下一个位置/下一行粘贴
u
:撤销
Ctrl+r
:取消撤销
>
:将选中的文本向右缩进一次
<
:将选中的文本向左缩进一次
:w
:保存
:w!
强制保存
:q
:退出
:q!
:强制退出
:wq
:保存并退出
2.4 可视化复制
ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴
2.5 剪切/删除
剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移:
D
: 删除之后当前行会变成空白行
剪切/删除光标所在行:
dd
: 删除之后下一行上移
注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行:
数字dd
: 删除之后下一行上移
可视化删除:
ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块
2.6 撤销/恢复
:u (不属于命令模式) 或者 u
:撤销
ctrl + r
恢复(取消)之前的撤销操作
2.6 光标的快速移动
数字↑,数字↓
:以当前光标为准向上/向下移动n行
数字←,数字→
:以当前光标为准向左/向右移动n字符
末行模式下的快速移动方式:移动到指定的行:
输入英文“:”
其后输入行数数字,按下回车
3、末行模式
进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入
退出方式:
1. 连按2次esc键
2. 删除末行全部输入字符
3.1 保存操作(write)
:w
: 保存文件
:w 路径
: 另存为 路径
3.2 退出(quit)
:q
: 退出文件
3.3 保存并退出
:wq
: 保存并且退出
3.4 强制 (!)
:q!
: 表示强制退出,刚才做的修改操作不做保存
3.5 搜索/查找/替换
:noh
:关闭查找关键词高亮
/word
:向光标之后寻找第一个值为word的字符串
?word
:向光标之前寻找第一个值为word的字符串
n
:重复上一个查找操作
N
:反向重复前一个查找操作
:n1,n2s/word1/word2/g
:n1与n2为数字,在第n1行与n2行之间寻找word1这个字符串,并将该字符串替换为word2
:1,$s/word1/word2/g
:将全文的word1替换为word2
:1,$s/word1/word2/gc
:将全文的word1替换为word2,且在替换前要求用户确认。
3.6 替换
:s/搜索的关键词/新的内容
:替换光标所在行的第一处符合条件的内容
:s/搜索的关键词/新的内容/g
:替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容
: 替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g
:替换整个文档的符合条件的内容
注释:%表示整个文件g表示全局
3.7 显示行号(临时)
:set nu
:
:set nonu
: 取消显示
3.8 代码着色
:syntax on
:显示
:syntax off
:关闭显示
4、vim的配置
Vim配置有三种情况:a. 在文件打开的时候在末行模式下输入的配置(临时的)b. 个人配置文件(~/.vimrc,如果没有可以自行新建)c. 全局配置文件(vim自带,/etc/vimrc)新建好个人配置文件之后进入编辑,在配置文件中进行配置比如显示行号:set nu配置好之后vim打开文件就会永远显示行号
vim ~/.vimrc
set tabstop=4 set softtabstop=4 set shiftwidth=4set noexpandtab set nu set autoindent set cindent set nolistsyntax onhighlight Function cterm=bold,underline ctermbg=red ctermfg=greenset fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencoding=utf-8set encoding=utf-8set cursorlineset culset cursorcolumnset cuc set selection=exclusiveset selectmode=mouse,keyset showmatch
常用配置:
set nu " 显示行号set tabstop=4 " 设置软制表符宽度为4set softtabstop=4 " 设置软制表符宽度为4set shiftwidth=4 " 设置缩进的空格数为4set autoindent " 设置自动缩进:即每行的缩进值与上一行相等set cindent " 使用 C/C++ 语言的自动缩进方式set cursorline " 突出显示当前行set expandtab " 空格代替制表符set showmatch " 光标遇到圆括号、方括号、大括号时,自动高亮对应的另一个圆括号、方括号和大括号set ruler " 在状态栏显示光标的当前位置(位于哪一行哪一列) set guifont=Consolas:h15 " 设置字体和字体大小colorscheme molokai " 设置主题为molokai set nobackup " 取消备份文件 " 默认情况下,文件保存时,会额外创建一个备份文件,它的文件名是在原文件名的末尾,再添加一个波浪号~setlocal noswapfile " 不创建交换文件。交换文件主要用于系统崩溃时恢复文件,文件名的开头是.、结尾是.swpset noundofile " 取消生成un文件 set hlsearch " 设置高亮显示搜索字符串set showmode " 在底部显示,当前处于命令模式还是插入模式set showcmd " 命令模式下,在底部显示,当前键入的指令。比如输入快捷键将在底部显示具体命令set t_Co=256 " 启用256色set noerrorbells " 出错时不要发出响声" 高亮显示syntax onsyntax enable" 编码配置set enc=utf-8set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936set termencoding=utf-8set encoding=utf-8set fileencodings=ucs-bom,utf-8,cp936set fileencoding=utf-8
四、自有服务
1、用户与用户组管理
注意三个文件:/etc/passwd存储用户的关键信息/etc/group存储用户组的关键信息/etc/shadow存储用户的密码信息
查询用户和用户所在的用户组:
id#id 用户名id test
groups#groups 用户名groups test
1.1 添加用户
#语法:useradd 选项 用户名常用选项:-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义-c comment:添加注释
在不添加选项的时候,执行useradd之后会执行一系列的操作
a. 创建同名的家目录;
b. 创建同名的用户组;
添加用户后验证,打开/etc/passwd,最后一行为最近添加的用户。
/etc/passwd 文件列表字段解析:用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell
户名:创建新用户名称,后期登录的时候需要输入;
密码:此密码位置一般情况都是“x”,表示密码的占位;
用户ID:用户的识别符;
用户组ID:该用户所属的主组ID;
注释:解释该用户是做什么用的;
家目录:用户登录进入系统之后默认的位置;
解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;
1.2 修改用户
#语法:usermod 选项 用户名#用法1:usermod -g 500 -G 501 test#含义:修改test用户主组为500,附加组改为501#用法2:usermod -l 新的用户名 旧的用户名usermod -l test testt#含义:修改test 用户名为 testt#常用选项:#-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名#-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名#-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】#-l:修改用户名
1.3 设置密码
#语法:passwd 用户名passwd test#作用:设置test用户的密码
1.4 删除用户
#语法:userdel 选项 用户名userdel -r test#常用选项:#-r:表示删除用户的同时,删除其家目录;
2、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。/etc/group文件结构:用户组名:密码:用户组ID:组内用户名密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;组内用户名:表示附加组是该组的用户名称;
2.1 用户组添加
#语法:groupadd 选项 用户组名#常用选项:#-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
2.2 用户组编辑
#语法:groupmod 选项 用户组名groupmod -g 520 -n admins Administrators#含义:修改Administrators用户组,将组ID改成520,将名称改为admins#常用选项:#-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字#-n:类似于用户修改“-l”,表示设置新的用户组的名称
2.3 用户组组删除
#语法:groupdel 用户组名
当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
3、网络设置
网卡配置文件路径:/etc/sysconfig/network-scripts在目录中网卡的配置文件命名格式:ifcfg-网卡名称
#进入网卡配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT:是否开机启动
BOOTPROTO:ip地址分配方式,dhcp表示动态主机分配协议 ,static表示静态地址
设置静态IP,修改BOOTPROTO为static:
BOOTPROTO=static
在底部增加IP地址
# 以下三行内容根据自己设定的去修改 # IPADDR就是上方设置的宿主机ip地址 # NETMASK就是上方设置的宿主机子网掩码 # GATEWAY就是上方设置的宿主机默认网关 IPADDR=192.168.233.132NETMASK=255.255.255.0 GATEWAY=192.168.233.1
#设置完后重启网络systemctl restart network#查看IP是否设置成功ifconfig
4、ssh服务
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。协议使用端口号:默认是22可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:
vim /etc/ssh/ssh_config
部分参数注释:
Port 22,sshd服务的端口
Protocol 2,也就是外部连接的协议用ssh2,当然如果不设置也可。
PermitRootLogin no/yes,如果允许使用root登陆则设为yes,否则为no
PasswordAuthentication no/yes,no为不允许使用密码登陆,yes为允许使用密码登陆,一般如果用自己账户登录都用密码,所以这一项最好设为yes,否则会导致window中能ping通linux系统,但是ssh连接不上。端口号可以修改,但是得注意2个事项:
a. 注意范围,端口范围是从0-65535;
b. 不能使用别的服务已经占用的端口;
#重启sshd命令systemctl restart sshd.service #启动sshd命令systemctl start sshd.service#检查ssh服务是否开启:ps -e | grep sshd#检查 22端口 是否开启:netstat -ntlp | grep 22#将ssh服务添加到自启动列表中:systemctl enable sshd.service#查看防火墙是否打开,running 为打开状态firewall-cmd --state #端口如果开放则为yes,否则为nofirewall-cmd --zone=public --query-port=22/tcp #添加(--permanent永久生效,没有此参数重启后失效)firewall-cmd --add-port=22/tcp --permanent#添加完成后要重新载入firewall-cmd --reload
若sshd服务和firewalld服务都正常,SSH任然连不上,并且ping不通主机,则检查windows网络,禁用虚拟网络再启用
5、设置主机名
5.1 临时设置主机名(立竿见影),需要切换用户使之生效
hostname 设置的主机名
5.2 永久设置主机名(需要重启)
在CentOS7中有三种定义的主机名:静态的(static)、瞬态的(transient)、和灵活的(pretty)。静态主机名:也称为内核主机名,是系统在启动时从/etc/hostname内自动初始化的主机名。瞬态主机名:是在系统运行时临时分配的主机名。灵活主机名:则允许使用特殊字符的主机名。
hostnamectl --static set-hostname 新主机名#或者hostnamectl set-hostname 新主机名
一旦修改了静态主机名,/etc/hostname 将被自动更新。
每次在修改主机名后一定要手 动更新/etc/hosts
vim /etc/hosts
6、查看开机启动项
systemctl list-unit-files
左边是服务名称,右边是状态,enabled是开机启动,disabled是开机不启动,static:未配置
#检查开机是否自启动systemctl is-enabled firewalld.service
#含义:过滤查看某服务名systemctl list-unit-files | grep sshd#过滤查询启动项systemctl list-unit-files | grep enable #设置开机自启 / 关闭systemctl enable/disable sshdsystemctl enable/disable sshd#设置启动/关闭/重启systemctl start / stop / restart sshd
7、防火墙服务firewalld
#检查防火墙状态:systemctl status firewalld #设置开机启用防火墙:systemctl enable firewalld.service#设置开机禁用防火墙:systemctl disable firewalld.service#启动防火墙:systemctl start firewalld#关闭防火墙:systemctl stop firewalld#查看防火墙状态,是否是runningfirewall-cmd --state#查看防火墙开放端口:firewall-cmd --list-port#重新载入配置,比如添加规则之后,需要执行此命令firewall-cmd --reload #列出支持的zone firewall-cmd --get-zones #列出支持的服务,在列表中的服务是放行的 firewall-cmd --get-services #查看ftp服务是否支持,返回yes或者no firewall-cmd --query-service ftp #临时开放ftp服务 firewall-cmd --add-service=ftp #永久开放ftp服务 firewall-cmd --add-service=ftp --permanent #永久移除ftp服务 firewall-cmd --remove-service=ftp --permanent #永久添加80端口 firewall-cmd --add-port=80/tcp --permanent #查看规则,这个命令是和iptables的相同的iptables -L -n #查看帮助 man firewall-cmd #开启防火墙端口firewall-cmd --zone=public --add-port=80/tcp --permanent #命令含义:#–zone 作用域#–add-port=80/tcp #添加端口,格式为:端口号/通讯协议#–permanent #永久生效,没有此参数重启后失效#添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效#关闭防火墙端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
8、rpm、yum管理
8.1 rpm命令
rpm包命名规则:
rpm包默认安装路径:
#含义:查询是否安装了firefox#用法:rpm -qa|grep firefox#选项:-q:查询,query-a:全部,all
#含义:rpm包升级#命令1:rpm -Uvh 包全名#选项:#-U:升级安装(如果没有安装过,系统直接安装;如果安装的版本较老,则升级到新版本)#命令2:rpm -Fvh 包全名#选项:#-F:升级安装(如果没有安装过,则不会安装;必须有旧版本的软件安装,才能升级)
#含义:卸载某个软件rpm -evh mysql-5.7.40-4.el6.x86_64 –nodeps#说明:-e参数表示删除 –nodeps表示不校验依赖关系#含义:安装某个软件rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
选项的含义:
-i: 表示安装
-v: 表示可视化
-h: 表示显示安装进度 另外,在安装RPM包时,常用的附带参数还包括如下几项。
–force: 表示强制安装,即使覆盖属于其他包的文件也要安装
–nodeps: 表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包
#如果是用tar包安装的软件,则使用如下命令来卸载;make uninstall 软件名
8.2 yum命令
#yum 命令格式:yum [选项] COMMAND [软件包]
选项:
-y:自动回答"yes",不再询问。如果不加该选项,安装过程中每个涉及的包安装都要手工回答 “yes” or “no”
-q:静默模式。不显示安装过程
-C:完全从缓存中运行,而不去下载或者更新任何头文件
COMMAND (要进行的操作) :
install:执行安装操作
update:执行升级操作
remove:执行卸载操作
list:显示可用软件包列表
search:根据关键字匹配软件包
info:显示软件包信息 软件包:如果为包名,则默认为软件包的最新版本;如果要指定软件包版本,则需要使用包全名
安装命令:
#安装指定软件包:yum -y install 包名
升级命令:
#升级指定软件包:yum -y update 包名#升级本机所有软件包:yum -y update
注意:在进行升级操作的时候,yum源服务器中软件包的版本要比本机安装的软件包的版本高。
卸载命令:
卸载指定软件包:yum remove 包名
注意:除非确定要卸载的软件依赖包不会对系统产生影响,否则不要执行yum卸载。
查询命令:
#查询yum源服务器上所有可安装的软件包列表yum list#查询yum源服务器中是否包含某个软件包yum list 包名#查询yum源服务器上所有和关键字相关的软件包(可用于确定某个软件在哪个相关包中)yum search 关键字#查询指定软件包的信息yum info 包名
9、cron/crontab定时任务
crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名/etc/crontab 这个文件负责调度各种管理和维护任务。/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
#语法:crontab 选项#选项:#-l:list,列出指定用户的计划任务列表#-e:edit,编辑指定用户的计划任务列表#-u:user,指定的用户名,如果不指定,则表示当前用户#-r:remove,删除指定用户的计划任务列表
四个符号:
:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:每10分钟一次,则可以在分的位置写:/10
,:表示多个取值,例如:在1点,2点6点执行,则可以在时的位置写:1,2,6
#每1分钟执行一次myCommand* * * * * myCommand#每小时的第3和第15分钟执行3,15 * * * * myCommand#在上午8点到11点的第3和第15分钟执行3,15 8-11 * * * myCommand#每隔两天的上午8点到11点的第3和第15分钟执行3,15 8-11 */2 * * myCommand#每周一上午8点到11点的第3和第15分钟执行3,15 8-11 * * 1 myCommand
10、环境变量
具体使用哪种形式的配置,需要根据需求来确定。
临时生效(重启则无效)
# 设置环境变量 TESTexport TEST=/etc/# 测试echo $TEST
全局环境变量,对所有用户都会生效
# 编辑文件vi /etc/profile# 增加配置TEST=/etc/export TEST# 退出文件编辑,另配置生效source /etc/profile# 测试echo $TEST
11、压缩解压
zip:
#将当前目录,打包为 test.zip 文件zip -r test.zip ./*
#解压 test.zip 文件unzip test.zip
#要把文件解压到指定的目录下,需要用到-d参数。unzip -d /temp test.zip
tar:
#将当前目录压缩为 name.tar.gz 文件tar -czf name.tar.gz ./*
#解压后缀名为 .tar.gz 的文件tar -zxvf filename.tar.gz
#解压后缀名问 .tar 的文件tar -xvf filename.tar
五、权限管理
5.1 权限介绍
一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限。
读权限: 对于文件夹来说,读权限影响用户是否能够列出目录结构 对于文件来说,读权限影响用户是否可以查看文件内容
写权限: 对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档
对于文件来说,写权限影响用户是否可以编辑文件内容
执行权限: 一般都是对于文件来说,特别脚本文件。
十位字符表示含义:
第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”等等;
第2-4位:表示文档所有者的权限情况:
第2位表示读权限的情况,取值有r、-;
第3位表示写权限的情况,w表示可写,-表示不可写,
第4位表示执行权限的情况,取值有x、-。
第5-7位:表示与所有者同在一个组的用户的权限情况:
第5位表示读权限的情况,取值有r、-;
第6位表示写权限的情况,w表示可写,-表示不可写,
第7位表示执行权限的情况,取值有x、-。
第8-10位:表示除了上面的前2部分的用户之外的其他用户的权限情况:
第8位表示读权限的情况,取值有r、-;
第9位表示写权限的情况,w表示可写,-表示不可写,
第10位表示执行权限的情况,取值有x、-。
权限分配中,均是rwx的三个参数组合,且位置顺序不会变化。没有对应权限就用 – 代替。
5.2 权限设置
#语法:chmod 选项 权限模式 文档#选项:#-R:递归设置权限(当文档类型为文件夹的时候)#权限模式:就是该文档需要设置的权限信息#文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
#含义:更改文档的所属用户#语法:chown -R username 文档路径
1、字母形式
给谁设置:
u:表示所有者身份owner(user)
g:表示给所有者同组用户设置(group)
o:表示others,给其他用户设置权限
a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置权限字符:
r:读
w:写
x:表示执行
-:表示没有权限权限分配方式:
+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】
#含义:anaconda-ks.cfg文件(-rw-------.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。chmod u+x,g+rx,o+r anaconda-ks.cfgchmod u=rwx,g=rx,o=r anaconda-ks.cfg
当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。
#chmod ug=rwx 形式,如果有两部分权限一样则可以合在一起写的
例如:
如果anaconda-ks.cfg文件什么权限都没有,可以使用root用户设置所有人都有执行权限,则可以写成
chmod +x anaconda-ks.cfg
chmod a=x anaconda-ks.cfg
chmod a+x anaconda-ks.cfg
2、数字形式
类似于#chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)。
读:r 4
写:w 2
执行:x 1
没有任何权限:0
例如:
给anaconda-ks.cfg设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
全部权限(u):读+写+执行=4+2+1=7
读和执行(g):读+执行=4+1=5
读权限(o):读=4
由上得知权限为:754
chmod 754 anaconda-ks.cfg