linux命令
Linux 的基础使用
命令基本格式
Linux 执行命令的一般格式:命令名称 [命令参数] [命令对象]
-
命令名称、命令参数、命令对象之间用空格分隔。
-
命令参数则可以用长格式(--)或短格式(-)。
- 注意:长格式后面跟完整的单词;短格式后面跟单个的字符。
-
命令对象一般是指要处理的文件、目录(文件夹)、用户等资源 。
Linux 命令很多,最重要的是各种参数的搭配使用,记住所有参数是不可能的,需要经常通过帮助命令进行查阅。
目录
1-目录结构
- Linux 的文件系统是采用级层式的树状目录结构,在此结构中最上层是根目录 “ / ”,然后在此目录下再创建其它的目录。
- 在linux世界里:一切皆文件。
输入命令”cd /”,切换至根目录,再输入” ls ”,查看当前目录结构。
.
2-目录说明
/bin
bin 是 Binary(二进制)的缩写,这个目录存放着最经常使用的命令。
/boot
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev
dev 是 Device(设备)的缩写, 存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc
Editable Text Configuration:可编辑文本配置
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home目录
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
类似 windows 的个人用户目录。
/lib
这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。
/media
linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt
这是给主机额外安装软件所摆放的目录。
比如你安装一个 Oracle 数据库则就可以放到这个目录下。默认是空的。
/proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root
该目录为系统管理员,也称作超级权限者的用户主目录。
/run
是一个临时文件系统,存储系统启动以来的信息。
当系统重启时,这个目录下的文件应该被删掉或清除
/sbin
s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
/srv
该目录存放一些服务启动之后需要提取的数据。
/sys
这是 linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
/tmp
这个目录是用来存放一些临时文件的。
用完即丢的文件,可以放在这个目录下,例如安装包。
/usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin
系统用户使用的应用程序。
/usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src
内核源代码默认的放置目录。
/var
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
3-目录总结
① linux 的目录中有且只有一个根目录 /。
② linux 的各个目录存放的内容是规划好的,不要乱放文件。
③ linux 是以文件的形式管理我们的设备,因此 linux 系统,一切皆文件。
④ linux 的各个文件目录下存放什么内容,必须有一个认识。
系统管理
关机
linux一般用在服务器上,很少遇到关机的情况,毕竟关机服务就会中断,除非特殊情况不得已才会关闭。
提醒:无论重启还是关机,都需要先将内存数据同步到硬盘中(即:先执行 sync 命令,再关机或重启),避免数据丢失。
小心驶得万年船!
立刻进行关机
关机并关闭电源
-h:halt(停止)
sync
shutdown -h now
立即关机
等价于 shutdown -h now
sync
poweroff
关闭系统
仅关机,不关闭电源
sync
halt
一分钟后关机
sync
shutdown -h 1
shutdown
默认为 shutdown -h 1
sync
shutdown
重启
sync
reboot
-r:-reboot
sync
shutdown -r now
sync
把内存的数据同步到磁盘(小心驶得万年船)
注销用户
注销用户
注销指令在图形运行级别无效,在运行级别 3 下有效
logout
用户管理
切换用户(switch user)
su - 用户名
增加用户
添加用户
useradd 用户名
给新创建的用户指定家目录
useradd -d /home/新目录名 新用户名
注意:新目录名不能是已经存在的目录。一定要 “新”!
删除用户
删除用户,保留家目录(推荐使用✔️)
userdel 用户名
彻底删除(慎用,想清楚自己在干什么❗)
recursion:递归
userdel -r 用户名
修改用户
修改指定用户密码
passwd 用户名
修改当前用户的密码
passwd
注意:passwd
后面不跟用户名。
查询用户
显示当前用户所在的目录
print work directory
pwd
查看当前(登录)用户
简略(我是谁)
whoami
详细(我是谁)
who am i
查询用户信息指令
id 用户名
注意:当用户不存在时,返回无此用户(no such user
)。
用户组(角色)
增加组
新增组
groupadd 新组名
增加用户时直接加上组
useradd -g 已有的组名 新用户名
删除组
删除组
groupdel 组名
修改组
修改用户的组
usermod -g 新组名(已存在的) 用户名
改变用户登录的初始目录
usermod -d 新初始目录 用户名
注意:用户须有进入新目录的权限(权限问题!)。
指定运行级别
常用运行级别
3 — 多用户状态有网络服务
5 — 图形界面
切换到运行级别为 3 的无图形界面状态
init 3
切换到图形界面
init 5
查看当前(默认)运行级别
systemctl get-default
修改(默认)运行级别
XXX.target
① multi-user.target => 多用户状态有网络服务
② graphical.target => 图形界面
systemctl set-default XXX.target
注意:修改完后需要重启:reboot
文件目录类
显示当前工作目录的绝对路径
pwd
显示信息
以列表形式
ls:list
ls -l
简写为:
ll
显示所有文件(包含隐藏文件)
ls -a
显示指定文件
ll -a 文件路径
仅显示隐藏文件
l.
人性化显示文件大小(显示单位)
ll -h
切换目录
回到自己的家目录
cd:change directory
cd ~
或
cd
eg. 你是 root 用户,cd ~
回到 /root 目录
回到当前目录的上一级目录
cd ..
创建目录
mkdir:make directory
一级目录
mkdir 要创建的目录
eg. mkdir /home/dog
多级目录
mkdir -p 目录路径
eg. mkdir -p /home/animal/cat
删除目录
空目录
rmdir 要删除的空目录
非空目录(慎用小心)
rm:remove directory
r:recursion => 递归
f:force => 强制
rm -rf 要删除的非空目录
创建空文件
touch:触控
touch 文件名称
拷贝(复制)
单个文件
cp 源文件 目标目录(文件夹)
等价于
cp source dest
整个文件夹
r:recursion => 递归
cp -r 源目录(文件夹) 目标目录(文件夹)
强制覆盖不提示
\cp -r source dest
移除(文件 or 目录)
一个文件
提示
rm 文件名
不提示
rm -f 文件名
目录
提示
rm -r 目录
不提示(小心谨慎)
rm -rf 目录
移动
移动文件
mv 源文件 目标目录/
移动目录
mv 源目录 目标目录/
重命名
同一个文件夹(目录)下的文件的移动就是重命名操作。
mv 源文件(夹)名 新文件(夹)名
移动并且重命名
mv 源文件(夹) 目标文件夹/新文件(夹)名
注意:移动最后要加上 /,重命名不能加上 /
查看文件内容
n:number => 行号
|:管道命令
more:分页
cat -n 要查看的文件 | more
more 指令
按键 | 说明 |
---|---|
空格键(space) | 向下翻一页 |
Enter | 向下翻一行 |
q | 立即离开 more,不再显示内容 |
= | 输出当前行号 |
:f | 输出文件名和当前行号 |
less 指令(按需加载)推荐
按键 | 说明 |
---|---|
空格键 | 向下翻动一页 |
/字串 | 向下搜索 [字串] 功能,n:向下查找,N:向上 |
?字串 | 向上搜索 [字串] 功能,n:向上查找,N:向下 |
q | 离开 less 程序 |
输出内容到控制台
echo 输出内容
eg. echo $HOSTNAME
or echo "Hello World!"
head 指令
查看文件头 10 行内容(默认)
head 文件
查看文件头 5 行内容
数字 5 可以是任意行数
head -n 5 文件
tail 指令
查看文件尾 10 行内容(默认)
tail 文件
查看文件尾 5 行内容
数字 5 可以是任意行数
tail -n 5 文件
实时追踪该文档的所有更新
ctrl + c:退出
tail -f 文件
>
输出重定向(覆盖)
可用于复制
eg.
列表的内容写入文件中(覆盖写)
ls -l > 文件
将文件 1 的内容覆盖到文件 2
cat 文件1 > 文件2
>>
追加
可用于复制
eg.
列表的内容追加到文件的末尾
ls -al >> 文件
将 "内容" 追加到文件的末尾
echo "内容" >> 文件
软链接(符号链接、快捷方式)
给源文件创建一个软链接
ln -s 源文件或目录 软链接名
删除软链接
rm 软链接名
注意:不要加上 -rf
参数!
细节:使用 pwd
指令查看目录时,仍然看到的是软链接所在的目录。
history 指令
显示所有的历史命令
history
显示最近使用过的 10 个指令
history 10
history tail
执行历史编号为 5 的指令
!5
时间日期指令
date 指令
显示当前时间
date
显示当前年月日
date "+%Y-%m-%d"
显示当前年月日时分秒
date "+%Y-%m-%d %H:%M:%S"
设置日期
date -s 字符串时间
eg.
设置日期
date -s "2022-08-12 18:56:00"
cal 指令(日历)
显示当前本月日历
cal
显示 2023 年日历
cal 2023
搜索查找类
find 指令
格式:find 搜索范围 选项
eg.
按文件名:根据名称查找 / 目录下的 a.txt 文件
find / -name a.txt
按拥有者:查找 /opt 目录下,用户名称为 rnny 的文件
find /opt -user rnny
查找整个 Linux 系统下大于 200M 的文件
+n:大于
n:等于
-n:小于
find / -size +200M
单位:k、M、G
locate 指令
① 由于 locate 指令基于数据库查询,所有管理员需要定期更新 locate,以保证查询结果的准确度。
创建或更新 locate 数据库
updatedb
② 使用 locate 指令快速定位 a.txt 位置
locate a.txt
which 指令
查看指令在哪个目录
which 指令
eg.
查看 ls 指令在哪个目录
which ls
查看 reboot 指令在哪个目录
which reboot
grep 指令
grep:global regular expression print
过滤查找
格式:grep 选项 查找内容 源文件
eg. 在 a.txt 文件中,查找 "rnny" 所在行,并显示行号
-n:显示行号
-i:不区分字母大小写(ignore)
cat a.txt | grep -n "rnny"
grep -n "rnny" a.txt
grep -i "rnny" a.txt
cat a.txt | grep -ni "rnny"
|
管道符号 |:表示将前一个命令的处理结果输出传递给后面的指令处理。
压缩和解压类
压缩文件
gzip 文件
注意:只能将文件压缩为 *.gz
文件
解压缩文件
gunzip 文件.gz
压缩文件或文件夹(目录)
zip -r 压缩后文件(夹) 需要压缩的文件(夹)
eg. 将 /home 下的所有文件/文件夹压缩成 myhome.zip
将 home 目录及其包含的文件和子文件夹都压缩
zip -r myhome.zip /home
解压文件或目录
unzip -d 目标目录 源压缩文件
eg. 将 myhome.zip 解压到 /opt/tmp 目录下
unzip -d /opt/tmp /home/myhome.zip
tar 指令
打包(压缩)
tar -zcvf 打包后文件.tar.gz 需打包的文件(夹)
eg. 压缩多个文件,将 a.txt,b.txt 压缩成 ab.tar.gz
tar -zcvf ab.tar.gz /home/a.txt /home/b.txt
tar -zcvf ab.tar.gz ./a.txt ./b.txt
注:使用相对路径无警告信息。
解压(解包)
tar -zxvf 需解包文件(夹) -C 解包的目的地
注:大 C
eg.
将 ab.tar.gz 解压到当前目录
tar -zxvf ab.tar.gz
将 ab.tar.gz 解压到 /opt/tmp 目录下(指定压缩目录)
tar -zxvf ab.tar.gz -C /opt/tmp
组管理
概念
① 所有者:一般为文件创建者。(谁创建了该文件,就自然的成为该文件的所有者)
② 所在组:用户所在的组。
③ 其他组:除文件的所有者和所在组的用户之外,系统的其他用户都是文件的其他组。
查看文件所有者
ll -ah
修改文件所有者
chown:change own
chown newowner 文件(夹)名
chown 新所有者的用户名 文件(夹)名
递归改变文件所有者和所在组
chown newowner:newgroup -R 文件/目录
修改文件所在的组(所在组)
chgrp:change group
chgrp 新组名 文件(夹)名
递归修改
chgrp -R 新组名 文件(夹)名
eg. 将 rnny 这个用户从原来的组,修改到 student 组中
① 查看当前 rnny 所在的组
id rnny
② 查看是否存在 student 组
cat /etc/group | grep -n "student"
③ 添加 student 组(若存在,则此步省略)
groupadd student
④ 修改用户 rnny 所在的组
usermod -g student rnny
权限管理
rwx 说明
Linux 下有两种用户:超级用户(root)、普通用户。
超级用户:可以再 linux 系统下做任何事情,不受限制(权限控制无用!)。
普通用户:在 linux 下做有限的事情(受权限控制)。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
-rwxrw-r--
共 10 位,编号:0~9
编号 | 说明 |
---|---|
第 0 位 | 确定文件类型(-、d、l、c、b) - => 普通文件 d => 目录(文件夹)directory l => 链接(快捷方式)link c => 字符设备文件(鼠标、键盘)char b => 块设备(硬盘)block |
第 1~3 位 | 所有者对该文件的权限(User) |
第 4~6 位 | 所在组成员对该文件的权限(Group) |
第 7~9 位 | 其它用户拥有对该文件的权限(Other) |
rwx(read、write、execute)
权限 | 说明 |
---|---|
r 数字表示:4 |
文件 => 可读取、查看文件内容(具体内容)。 目录 => 可读取目录有(包含)哪些具体文件列表。 |
w 2 |
文件 => 可修改文件的具体内容,但不代表可以删除文件。 目录 => 目录内创建、删除、重命名目录或文件。 |
x 1 |
文件 => 执行该文件。(要保证该文件为可执行文件) 目录 => 进入该目录。 |
注:
① 可执行文件如何执行?eg. 比如 home 目录下有 my.sh 可执行文件,执行命令为:/home/my.sh
(直接访问就可以执行该文件)
② 如果要创建(or 删除、重命名)当前文件或目录,那么需要有上一级目录的 w 权限(可写权限)。
案例分析
eg. 分析下图
使用命令:
ll
使用命令:
ll -h
(人性化显示)
① 前 10 个字符确定不同用户能对文件干什么?(权限)
第 0 位 => 代表文件类型,-、d、l、c、b
其余字符每 3 个一组(rwx)读、写、执行。
第 1~3 位 => 文件拥有者(所有者)的权限是 读、写、执行。
第 4~6 位 => 所在组用户的权限是 读、执行。
第 7~9 位 => 其它用户的权限也是读、执行。
权限也可用数字表示:
r = 4、w = 2、x = 1
,因此 rwx = 4 + 2 + 1 = 7
② 其他说明
使用命令:
ll -h
(人性化显示)
数字2 | 文件 => 文件一定是数字 1 目录 => 子目录数(包括隐藏目录,不包括文件数) |
---|
注:空目录是数字 2,含 2 个隐藏目录。
第一个 root => 所有者
第二个 root => 所在组
4096、4.0K => 目录大小(-h 选项下,显示单位)
2 月 2 18:59 => 最后修改时间
dirname => 目录名
修改文件或目录的权限
chmod:change mode
+-=
变更权限
u
:所有者、g
:所在组、o
:其他人、a
:所有人(u,g,o 的总和)
chmod u=rwx,g=rx,o=x 文件/目录
注:,
与下一个字母间无空格。
chmod o+w 文件/目录
chmod a-x 文件/目录
提示:文件为绿色 => 代表可执行文件!
通过数字变更权限(8421)r = 4,w = 2,x = 1,rwx = 4 + 2 + 1 = 7
# chmod u=rwx,g=rx,o=x 文件/目录 等价于
chmod 751 文件/目录
# chmod a=rwx 文件/目录 等价于
chmod 777 文件/目录
注意:当我们修改了用户所在组时,仍然提示权限不够,此时我们重启即可。
定时任务调度
crontab
定时任务
crontab 进行定时任务的设置
编辑 crontab
定时任务
crontab -e
查询 crontab
任务
crontab -l
删除当前用户所有的 crontab
任务
crontab -r
crontab
具体说明
*/1 * * * * ls -l /etc/ > /tmp/to.txt
① => 每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt
命令
② => 上面 5 个占位符的说明:
* 位置 | 说明 |
---|---|
第 1 个 * | 一个小时当中的第几分钟(0~59) |
第 2 个 * | 一天当中第几小时(0~23) |
第 3 个 * | 一个月当中第几天(1~31) |
第 4 个 * | 一年当中的第几月(1~12) |
第 5 个 * | 一周当中的星期几(0~7) 注:0 和 7 均代表星期日 |
③ => 占位符的具体分类说明:
符号 | 说明 |
---|---|
* | 代表任何时间。 比如:第一个 * 就代表一小时中每分钟都执行一次。 |
,(逗号) | 代表不连续时间。 比如: 0 8,12,16 * * * 需要执行的命令 => 代表每天的 8 点 0 分,12 点 0 分,16 点 0 分 都执行一次命令。 |
-(减号) | 代表连续的时间范围。 比如: 0 5 * * 1-6 需要执行的命令 => 代表在周一到周六的凌晨 5 点 0 分执行命令。 |
*/n | 代表每隔多久执行一次。 如: */10 * * * * 需要执行的命令 => 代表每隔 10 分钟执行一次。提示: */1 简写为 * |
特定时间执行任务案例
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 分钟执行一次命令(即 4: 00,4: 10,4: 20,...,4: 50)。
0 0 1,15 * 1 需要执行的命令
=> 每月的 1 号和 15 号,每周一的 0 点 0 分都会执行命令。(注意:星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱)
案例:每隔 1 分钟,将当前日期和日历都追加到 /home/mycal 中
步骤:
①
vim /home/my.sh
date >> /home/mycal
cal >> /home/mycal
②
chmod u+x /home/my.sh
③
crontab -e
* * * * * /home/my.sh
重启任务调度
service crond restart
at 定时任务(一次性)
注:使用
at
命令的时候,一定要保证atd
进程的启动。
检测 atd 是否在运行
ps -ef | grep atd
如图所示:
.
at 选项 时间
结束 at 命令的输入
ctrl + D
at 指定时间的方法
① hh:mm(小时:分钟) => 接受在当天 hh:mm
的时间指定,假如时间已过,则第二天执行。
② 模糊的词 => midnight
(深夜)、noon
(中午)、teatime
(下午茶时间,下午 4 点)
③ 12 小时计时制 => 在时间后面加上 am
(上午)或 pm
(下午)来说明上下午。eg. 12pm
④ 具体日期 => hh:mm yy-MM-dd
(小时:分钟 年-月-日)
⑤ 相对计时法 => now + count time-units
(now:当前时间、count:时间数量、time-units:时间单位【minutes
:分钟、hours
:小时、days
:天、weeks
:星期】)
⑥ 直接使用 today
(今天)、tomorrow
(明天)来指定完成时间
注:输错按 ctrl + backspace
删除.
查看系统中执行的工作任务
atq
删除已经设置的任务
atrm 编号
例如:atrm 5
案例
① 2 天后的下午 5 点执行 /bin/ls /home
at 5pm + 2days
/bin/ls /home
② 明天 17 点钟输出时间到指定文件内
at 5pm tomorrow
date > /root/date.log
③ 2 分钟后输出时间到指定文件内
at now + 2minutes
date >> /root/date.log
磁盘分区
查看所有设备挂载情况
mountpoint:挂载点
lsblk
lsblk -f
SCSI
硬盘 => sdx~
(x:a, b, c...【盘号】、~:分区号)
eg. sda1、sda2、...、sdb1、sdb2...
sda1 => 第一块硬盘第 1 个分区。
sdb2 => 第二块硬盘第 2 个分区。
挂载经典案例 — 增加一块硬盘
① 虚拟机添加硬盘(注意:选择 SCSI 磁盘)
.
② 分区
分区命令
fdisk /dev/sdb
字母 | 说明 |
---|---|
m | 显示命令列表 |
p | 显示磁盘分区,同 fdisk -l |
n | 新增分区 |
d | 删除分区 |
w | 写入并退出 |
说明:开始分区后输入 n【新增分区】,然后选择 p【分区类型为主类型】。两次回车【默认使用剩余全部空间】。最后输入 w【写入分区并退出】,若不保存退出输入 q
③ 格式化
mkfs -t ext4 /dev/sdb1
说明:ext4
是分区类型
④ 挂载
挂载:将一个分区与一个目录联系起来。
mount 设备名称 挂载目录
eg. mount /dev/sdb1 /newdisk
(需要先创建 newdisk 目录:mkdir newdisk
)
卸载
umount 设备名称或挂载目录
eg. umount /dev/sdb1
或 umount /newdisk
注意:用命令行挂载重启后会失效。
⑤ 设置自动挂载
永久挂载 => 修改 /etc/fstab
实现永久挂载
-
vim /etc/fstab
-
增加一行
/dev/sdb1 /newdisk ext4 defaults 0 0
说明:
/dev/sdb1
可以不使用UUID
-
使修改立即生效
mount -a
查询系统整体磁盘使用情况
disk free:磁盘空闲
df -h
查询指定目录的磁盘占用情况(默认为当前目录)
disk usage:磁盘使用
du -h 指定目录
参数 | 说明 |
---|---|
-a |
含文件(all) |
-c |
列出明细的同时,增加汇总值 |
-h |
带计量单位 |
-s |
指定目录占用大小汇总 |
--max-depth=1 |
指定子目录深度 |
案例:查询 /opt 目录的磁盘占用情况,深度为 1
du -ach --max-depth=1 /opt
工作实用指令
① 统计 /opt 文件夹下文件的个数(word count)
ll /opt | grep "^-" | wc -l
② 统计 /opt 文件夹下目录的个数
ll /opt | grep "^d" | wc -l
③ 统计 /opt 文件夹下文件的个数(包括子文件夹的)
ll -R /opt | grep "^-" | wc -l
④ 统计 /opt 文件夹下目录的个数(包括子文件夹的)
ll -R /opt | grep "^d" | wc -l
⑤ 以树状显示目录结构
安装 tree
命令(如果 Linux 没有 tree 命令)
yum install tree
tree 目录
⑥ 显示文件大小(以 G 结尾的文件或目录)
du -ach / | grep -P "^[\d.]*G"
网络配置
Windows 环境下查看网络配置
ipconfig
Linux 下查看网络配置
ifconfig
测试当前服务器(主机)是否可以连接目的主机
ping 目的主机
说明:此命令主要用来判断当前电脑是否能上网。
eg. ping www.baidu.com
=> 测试当前服务器是否可以连接百度。
指定 ip(设置静态 ip 地址)
直接修改配置文件来指定 ip,并可以连接到外网。
步骤:
①
vim /etc/sysconfig/network-scripts/ifcfg-ens33
②
修改
# 第 4 行:
BOOTPROTO="static"
# 第 15 行:
ONBOOT=yes
增加:
# ip 地址(具体你想修改的 ip 地址)
IPADDR=192.168.240.152
# 网关(具体分析)
GATEWAY=192.168.240.2
# 域名解析器
# 百度 DNS
DNS1=1腾讯DNS80.76.76.76
# 腾讯DNS
DNS2=119.29.29.29
# 阿里DNS
DNS3=223.5.5.5
DNS4=223.6.6.6
③ 重启网络服务或者重启系统生效
service network restart
reboot
查看主机名
hostname
修改主机名
-
vim /etc/hostname
-
reboot
设置 hosts 映射
通过主机名找到(比如:ping 通)某个 Linux 系统
Windows => 在 C:\Windows\System32\drivers\etc\hosts
文件指定即可。
Linux =>
vim /etc/hosts
增加 `ip 主机名`
主机名解析过程分析(hosts、DNS)
hosts
=> 一个文本文件,用来记录 ip
和 hostname
(主机名)的映射关系。
DNS
=> Domain Name System
是互联网上作为域名和 ip
地址相互映射的一个分布式数据库。
用户在浏览器输入 www.baidu.com
,过程分析图
客户电脑 -> 浏览器缓存 -> 电脑本地 DNS
缓存 -> hosts
文件 -> 域名服务器(网络)
进程
查看目前系统中有哪些正在执行的进程以及他们的执行状况
ps -aux
参数 | 说明 |
---|---|
a | 显示当前终端的所有进程信息 |
u | 以用户的格式显示进程信息 |
x | 显示后台进程运行的参数 |
eg. 查看是否有 sshd 服务
ps -aux | grep sshd
指令说明
名称 | 说明 |
---|---|
USER |
用户名称 |
PID |
进程号(Process ID) |
%CPU |
进程占用 CPU 百分比(进程的 CPU 占用率) |
%MEM |
进程占用物理内存百分比(进程的内存占用率) |
VSZ |
进程所使用的虚存的大小(Virtual Size) 该进程使用掉的虚拟内存量 (KB) |
RSS |
进程使用的驻留集大小或者是实际内存的大小,KB字节。 该进程占用的固定的内存量 (KB) |
TTY |
与进程关联的终端(tty) 该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 |
STAT |
进程状态(status) S:睡眠 Sleeping R:运行 Runnable (on run queue) D:不可中断 Uninterruptible sleep (ususally IO),需要短期等待 Z:僵死 Zombie(a defunct process),需要定期清理 T:终止 Terminate |
START |
启动进程的时间 |
TIME |
CPU 时间,即进程使用 CPU 时间 |
COMMAND |
正在执行的命令行命令 |
以全格式显示当前所有的进程(包括父进程号)
ps -ef
参数 | 说明 |
---|---|
e | 显示所有进程 |
f | 全格式 |
指令说明
名称 | 说明 |
---|---|
UID |
用户 ID |
PID |
进程 ID |
PPID |
父进程 ID |
C |
进程利用率 |
STIME |
启动进程的时间,同 START |
TTY |
与进程关联的终端(tty) |
TIME |
CPU 时间,即进程使用 CPU 时间 |
CMD |
正在执行的命令行命令,同 COMMAND |
终止进程
# 通过j
kill [选项] 进程号
选项:-9
=> 强制终止进程
通过进程名终止进程
这种方式也支持通配符,这在系统因负载过大而变得很慢时很有用
killall 进程名称
kill or killall实践
踢掉某个非法登录用户
kill 进程号
-
ps -aux | grep sshd
-
kill 2626【PID】
终止远程登录服务 sshd,在适当时候再次重启 sshd 服务
-
ps -ef | grep sshd
-
kill 4241【PID】
-
/bin/systemctl start sshd.service
终止多个 gedit(文本编辑器)
killall gedit
强制终止一个终端
-
ps -aux | grep bash
-
kill -9 bash对应的进程号
直观的显示进程信息
pstree -up
参数:-p
:显示进程的 PID、-u
:显示进程的所属用户。
注:没有此命令 => yum install tree
eg. 以树状显示 sshd 或 bash
pstree -up | grep sshd
pstree -up | grep bash
服务管理
服务(service):本质就是进程,运行在后台,监听某个端口。
守护进程:daemon
开启服务
service 服务名 start
关闭服务
service 服务名 stop
重启服务
service 服务名 restart
重新加载服务
service 服务名 reload
查看服务状态
service 服务名 status
注:在 Centos 7.0
后,很多服务指令不再使用 service
,而是用 systemctl
【全称:system control】
service
指令管理的服务在 /etc/init.d
ll /etc/init.d/
查看服务名
- 查看全部系统服务
setup
注:服务前有 *
表示开机时自动启动。(使用空格键来设置或取消开机自动启动服务)
- 查看 service 指令管理的服务(部分)
ll /etc/init.d/
服务的运行级别(runlevel)
常用的级别是 3
和 5
运行级别 3
=> 完全的多用户状态(有 NFS),登陆后进入控制台命令行模式,无界面(工作时用)
运行级别 5
=> 有图形界面(学习时用)
开机流程说明
开机 -> BIOS -> /boot -> systemd 进程 -> 运行级别 -> 运行级别对应的服务
查看当前的服务运行级别
systemctl get-default
修改服务的运行级别
systemctl set-default multi-user.target
chkconfig 指令
check config:检查配置
通过 chkconfig
命令可以给服务的各个运行级别设置自启动/关闭
chkconfig
指令管理的服务在 /etc/init.d
中查看
注:Centos 7.0
后,很多服务使用 systemctl
管理
查看全部服务
chkconfig --list
说明:支持 | grep xxx
查看指定服务信息
chkconfig 服务名 --list
在 5
运行级别设置自启动/关闭
chkconfig --level 5 服务名 on/off
注:chkconfig
设置的自启动或关闭需要 reboot
才可生效。
eg. 对 network 服务在运行级别 2 设置自启动/关闭
chkconfig --level 2 network on
chkconfig --level 2 network off
systemctl 指令
打开/关闭/重启/查看服务状态【临时】
systemctl [start|stop|restart|status] 服务名
注:systemctl
指令管理的服务在 /usr/lib/systemd/system
查看
ll /usr/lib/systemd/system
查看服务总数
ls /usr/lib/systemd/system | wc -l
查看服务开机启动状态(列表)
systemctl list-unit-files
注:支持 grep 过滤
设置服务开机启动【永久】
systemctl enable 服务名
关闭服务开机启动【永久】
systemctl disable 服务名
查询某个服务是否是自启动的
systemctl is-enabled 服务名
细节
① 关闭或启用防火墙的操作是立即生效的。
② systemctl start | stop 服务名
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
③ 如果希望设置某个服务自启动或关闭永久生效,要使用
systemctl [enable|disable] 服务名
案例:
查看防火墙状态
systemctl status firewalld
临时关闭防火墙
systemctl stop firewalld
临时开启防火墙
systemctl start firewalld
显示网络连接、路由表和网络接口信息
netstat -anp
注:此命令也可看网络协议和端口号
打开端口
firewall-cmd --permanent --add-port=端口号/协议
关闭端口
firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效
firewall-cmd --reload
注:打开关闭均需要
查询端口是否开放
firewall-cmd --query-port=端口号/协议
查询开放的端口列表
firewall-cmd --list-ports
案例
开放 8080 端口
-
# 查看 8080 端口是否被占用(不显示则表示没有占用,但不表示已开启此端口) netstat -anp | grep 8080
-
firewall-cmd --permanent --add-port=8080/tcp
-
firewall-cmd --reload
关闭 8080 端口
-
firewall-cmd --permanent --remove-port=8080/tcp
-
firewall-cmd --reload
动态监控进程
指定 top 命令每隔几秒更新
top -d 秒数
说明:默认为 3 秒
使 top 不显示任何闲置或者僵死进程
top -i
监控指定进程 id 的进程状态
top -p 进程号
交互操作说明:
P(大写)=> 以 CPU 使用率排序
M => 以内存使用率排序
N => 以 PID 排序
q => 退出 top
案例
监视特定用户,比如监视 rnny 用户
-
top
-
u
-
用户名rnny
终止指定的进程,比如终止 rnny 登录
-
top
-
u
-
用户名rnny
-
k
-
输入要结束的进程ID(PID)
-
输入强制选项 9
指定系统状态更新的时间为 10 秒(默认 3 秒)
top -d 10
监控网络状态
查看系统网络情况
netstat -anp
说明:-an
:按一定顺序排列输出、-p
:显示哪个进程在调用
案例
查看服务名为 sshd 的服务的信息
netstat -anp | grep sshd
检测主机连接命令
一种网络检测工具,它主要用来检测远程主机是否正常
ping ip地址
rpm 包的管理
查询已安装的 rpm 列表(所有)
rpm -qa | grep xxx
案例:查看当前系统是否安装了 Firefox(火狐)
rpm -qa | grep -i Firefox
一个 rpm 包名:firefox-60.8.0-1.el7.centos.x86_64
说明:
-
名称:
firefox
-
版本号:
60.8.0
-
适用操作系统:
1.el7.centos.x86_64
=> 表示centos.x
的64
位系统如果为
i686、i386
表示32
位系统,noarch
表示通用。
noarch
是no architecture 的缩写,说明这个包可以在各个不同的 cpu上使用。
查询软件包是否安装
rpm -q 软件包名
eg. rpm -q firefox
查询软件包信息
rpm -qi 软件包名
eg. rpm -qi firefox
查询软件包中的文件
rpm -ql 软件包名
eg. rpm -ql firefox
查询文件所属的软件包
rpm -qf 文件全路径名
eg. rpm -qf /etc/init.d
卸载 rpm 包
e:erase:擦除
rpm -e RPM包的名称(简称也行)
强制删除(慎用)
rpm -e --nodeps RPM包的名称
安装 rpm 包
i:install:安装
v:verbose:提示
h:hash:进度条
rpm -ivh RPM包全路径名称(可在镜像文件中找)
查询 yum 服务器是否有需要安装的软件
yum list | grep xxx
下载安装软件
yum install xxx
卸载软件
rpm -e 软件名
帮助
获取帮助信息
man:manual 或 man pages => 手册
man 命令或配置文件
man 帮助信息界面按键说明:
按键 | 用途 |
---|---|
空格键 | 向下翻一页 |
/ | 从上到下搜索关键字,eg. "/rnny" |
? | 从下到上搜索关键字,eg. "?rnny" |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档界面 |
获取 shell 内置命令的帮助信息
help 内置命令
例如:获取 cd 内置命令的帮助信息
help cd
彩蛋
① 在 Linux 下、隐藏文件是以 . 开头。
② 选项可以组合使用。eg.
显示指定目录信息
-l:list(列表)
-a:all(所有,含隐藏文件)
ls -la 文件名(目录)
目录
ls、cd、pwd、mkdir、rmdir、cp、rm、mv
- ls
# ls:列出目录
# ls 参数 目录名称
ls -l dir # 以列表形式显示数据,包含文件的属性、权限等数据。(简写:ll dir)
ls -a dir # 显示全部文件(包括隐藏文件)(隐藏文件:以 . 开头的文件)
ll -h dir # 以人能看懂的形式显示数据,一般就是将文件大小美化(即:带有单位)
# -l:list
# -a:all
# -h:human
# dir:directory
- cd
# cd:切换目录(change directory)
# cd [相对路径或绝对路径]
# 切换到用户家目录
cd /home
# 回到上一级目录
cd ..
# 回到根目录
cd /
# 回到当前用户自己的家目录
cd 或 cd ~
- pwd
# pwd:显示当前用户所在的目录路径(绝对路径)
# print working directory:打印工作目录
pwd # 显示当前工作目录
- mkdir
# mkdir:创建新目录
# make directory