linux命令

Linux 的基础使用

命令基本格式

Linux 执行命令的一般格式:命令名称 [命令参数] [命令对象]

  • 命令名称、命令参数、命令对象之间用空格分隔。

  • 命令参数则可以用长格式(--)或短格式(-)。

    • 注意:格式后面跟完整的单词;格式后面跟单个的字符
  • 命令对象一般是指要处理的文件目录(文件夹)用户等资源 。

Linux 命令很多,最重要的是各种参数的搭配使用,记住所有参数是不可能的,需要经常通过帮助命令进行查阅。

目录

1-目录结构

  • Linux 的文件系统是采用级层式树状目录结构,在此结构中最上层是根目录/ ”,然后在此目录下再创建其它的目录。
  • 在linux世界里:一切皆文件

输入命令”cd /”,切换至根目录,再输入” ls ”,查看当前目录结构。

image-20221024140522073.

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

image-20230202110209315

使用命令:ll -h(人性化显示)

image-20230202110334495

① 前 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(人性化显示)

image-20230202110334495

数字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

如图所示:

image-20230205204717152.

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 磁盘)

image-20230208191949573.

② 分区

分区命令

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/sdb1umount /newdisk

注意:用命令行挂载重启后会失效。

⑤ 设置自动挂载

永久挂载 => 修改 /etc/fstab 实现永久挂载

  1.  vim /etc/fstab
    
  2. 增加一行

    /dev/sdb1 /newdisk ext4 defaults 0 0
    

    说明:/dev/sdb1 可以不使用 UUID

  3. 使修改立即生效

    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

修改主机名

  1.  vim /etc/hostname
    
  2.  reboot
    

设置 hosts 映射

通过主机名找到(比如:ping 通)某个 Linux 系统

Windows => 在 C:\Windows\System32\drivers\etc\hosts 文件指定即可。

Linux =>

vim /etc/hosts

增加 `ip 主机名`

主机名解析过程分析(hosts、DNS)

hosts => 一个文本文件,用来记录 iphostname(主机名)的映射关系。

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 进程号

  1.  ps -aux | grep sshd
    
    
  2.  kill 2626【PID】
    

终止远程登录服务 sshd,在适当时候再次重启 sshd 服务

  1.  ps -ef | grep sshd
    
  2.  kill 4241【PID】
    
  3.  /bin/systemctl start sshd.service
    

终止多个 gedit(文本编辑器)

killall gedit

强制终止一个终端

  1.  ps -aux | grep bash
    
  2.  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/

查看服务名

  1. 查看全部系统服务
setup

注:服务前有 * 表示开机时自动启动。(使用空格键来设置或取消开机自动启动服务)

  1. 查看 service 指令管理的服务(部分)
ll /etc/init.d/

服务的运行级别(runlevel)

常用的级别是 35

运行级别 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 端口

  1.  # 查看 8080 端口是否被占用(不显示则表示没有占用,但不表示已开启此端口)
     netstat -anp | grep 8080
    
  2.  firewall-cmd --permanent --add-port=8080/tcp
    
  3.  firewall-cmd --reload
    

关闭 8080 端口

  1.  firewall-cmd --permanent --remove-port=8080/tcp
    
  2.  firewall-cmd --reload
    

动态监控进程

指定 top 命令每隔几秒更新

top -d 秒数

说明:默认为 3 秒

使 top 不显示任何闲置或者僵死进程

top -i

监控指定进程 id 的进程状态

top -p 进程号

交互操作说明:

P(大写)=> 以 CPU 使用率排序

M => 以内存使用率排序

N => 以 PID 排序

q => 退出 top

案例

监视特定用户,比如监视 rnny 用户

  1.  top
    
  2.  u
    
  3.  用户名rnny
    

终止指定的进程,比如终止 rnny 登录

  1.  top
    
  2.  u
    
  3.  用户名rnny
    
  4.  k
    
  5.  输入要结束的进程ID(PID)
    
  6.  输入强制选项 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.x64 位系统

    如果为 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

  1. ls
# ls:列出目录
# ls 参数 目录名称
ls -l dir	# 以列表形式显示数据,包含文件的属性、权限等数据。(简写:ll dir)
ls -a dir	# 显示全部文件(包括隐藏文件)(隐藏文件:以 . 开头的文件)
ll -h dir	# 以人能看懂的形式显示数据,一般就是将文件大小美化(即:带有单位)
# -l:list
# -a:all
# -h:human
# dir:directory
  1. cd
# cd:切换目录(change directory)
# cd [相对路径或绝对路径]
# 切换到用户家目录
cd /home
# 回到上一级目录
cd ..
# 回到根目录
cd /
# 回到当前用户自己的家目录
cd 或 cd ~
  1. pwd
# pwd:显示当前用户所在的目录路径(绝对路径)
# print working directory:打印工作目录
pwd	# 显示当前工作目录
  1. mkdir
# mkdir:创建新目录
# make directory

posted @ 2023-02-18 17:50  软柠柠吖  阅读(53)  评论(0编辑  收藏  举报