Linux常用命令

Linux常用命令

更多详细内容见:

OnlineEducationProject/Sprint0-环境搭建/NIIT-BD-PP-05-Linux Review-V1.1.md · 槐月初叁/23-S1-BigData_PP_Sprints_Learning

Linux文件编辑工具vi/vim

vi/vim的使用

vi或vim是Linuxi最常用的文本编辑器工具,vi或vim没有图形界面编辑器那样单机鼠标的简单操作,但编辑器在系统管理、服务器管理中,永远是图形界面的编辑器所不能比的。

基本上vi/vim共分为三种模式:

  1. 命令模式(Cornmand mode)
  2. 输入模式(Insert mode)
  3. 底线命令模式(Last line mode)

image-20240116235318009

命令模式

用户刚刚启动vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,被当作了一个命令。

image-20240117001223578

输入模式

在命令模式下按下i、o、a就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合:输入字符
  • ENTER:回车键,换行
  • BACK SPACE:退格键,删除光标前一个字符
  • DEL:删除键,删除光标后一个字符
  • 方向键:在文本中移动光标
  • HOME/END:移动光标到行首/行尾
  • Page Up/Page Down:上/下翻页
  • Insert:切换光标为输入/替换模式,光标将变成竖线下划线
  • ESC:退出输入模式,切换到命令模式
底线命令模式

主要保存或者退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转所编写文档的特定行数。

image-20240117002011293

shift + zz 也可以保存退出

Linux处理文件目录的常用命令

image-20240116233600654

pwd(显示目前所在目录)

pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。

[root@www ~] pwd [-P]

选项与参数:

-P:显示出确实的路径,而非使用连结(ink)路径。

mkdir(创建新目录)

如果想要创建新的目录的话,那么就使用mkdir(make directory)吧。

语法:mkdir [-mp] 目录名称

选项与参数:

  • -m:配置文件的权限喔!直接配置,不需要看默认权限(umask)的脸色~
  • -p:帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
rmdir(删除空的目录)

语法:rmdir [-p] 目录名称

选项与参数:

  • -p:从该目录起,一次删除多级空目录

    删除runoob目录

cp(复制文件或目录)

cp即拷贝文件和目录。copy的意思。

语法:cp [-adfilprsu] 来源档 目标档

选项与参数:

-r:递归持续复制,用于目录的复制行为

rm(删除文件或者目录)

语法:rm [-fir] 文件或目录

选项与参数:

  • -f:就是force的意思,忽略不存在的文件,不会出现警告信息;
  • -r:递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
mv(移动文件与目录,或修改名称)

语法:

mv [-fiu] source destination

mv [options] source1 source2 source3 ... directory

选项与参数:

  • -f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖:
  • -i:若目标文件(destination)已经存在时,就会询问是否覆盖!
  • -u:若目标文件已经存在,且source比较新,才会升级(update)

Linux文件内容查看命令

cat(显示文件内容)

由第一行开始显示文件内容

语法:cat [-AbEnTv]

选项与参数:

  • -A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已;
  • -b:列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E:将结尾的断行字节$显示出来;
  • -n:列印出行号,连同空白行也会有行号,与-b的选项不同;
  • -T:将[tab]按键以N显示出来;
  • -v:列出一些看不出来的特殊字符
tac(倒着显示文件内容)

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出tac是cat的倒着写!

如:tac /etc/issue

nl(显示行号)

语法:n1 [-bnw] 文件

选项与参数:

  • -b:指定行号指定的方式,主要有两种:

    -b a:表示不论是否为空行,也同样列出行号(类似cat -n);

    -b t:如果有空行,空的那一行不要列出行号(默认值);

  • -n:列出行号表示的方法,主要有三种:

    -n ln:行号在荧幕的最左方显示;

    -n rn:行号在自己栏位的最右方显示,且不加0;

    -n rz:行号在自己栏位的最右方显示,且加0;

  • -W:行号栏位的占用的位数

more(一页一页的显示文件内容)

一页一页翻动

在more这个程序的运行过程中,你有几个按键可以按的:

  • 空白键(space):代表向下翻一页;
  • Enter:代表向下翻『一行」;
  • /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f:立刻显示出档名以及目前显示的行数:
  • q:代表立刻离开more,不再显示该文件内容。
  • b或[ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用。
Iess(往前翻页)

一页一页翻动,以下实例输出/etc/man.config文件的内容:

Iess运行时可以输入的命令有:

  • 空白键:向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup]:向上翻动一页;
  • /字串:向下搜寻『字串』的功能;
  • ?字串:向上搜寻『字串』的功能;
  • n:重复前一个搜寻(与/或?有关!)
  • N:反向的重复前一个搜寻(与/或?有关!)
  • q:离开less这个程序;
head(只看头几行)

取出文件前面几行

语法:head [-n number] 文件

选项与参数:

  • -n:后面接数字,代表显示几行的意思
tail(只看尾几行)

取出文件后面几行

语法:tail [-n number] 文件

选项与参数:

  • -n:后面接数字,代表显示几行的意思
  • -f:表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

Linux打包压缩命令

tar命令

语法:tar [选项] [文件]

选项:

  • -c:产生.tar打包文件
  • -v:显示详细信息
  • -f:指定压缩后的文件名
  • -z:打包同时压缩Gzip
  • -x:解包.tar文件
# 打包多个文件
tar -zcvf test.tar.gz a.txt b.txt c.txt
# 解压文件
tar -zxvf test.tar.gz
# 解压文件到指定目录
tar -zxvf test.tar.gz -C /opt
gzip/gunzip压缩

语法:

gzip+文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

gunzip+文件.gz (功能描述:解压缩文件命令)

Linux搜索命令

grep命令

grep命令用于在文本中执行关键词搜索,并显示匹配的结果。

语法:

grep [参数 查找内容 源文件]

选项:

  • -b:将可执行文件(binary)当作文本文件(text)来搜索
  • -c:仅显示找到的行数
  • -i:忽略大小写
  • -n:显示行号
  • -v:反向选择一仅列出没有"关键词"的行
  • -E:开启扩展(Extend)的正则表达式
grep -n "a" a.txt
find命令

find命令用于按照指定条件来查找文件。

语法:

find [查找路径] 寻找条件 操作

选项:

  • -name:匹配名称
  • -perm:匹配权限(mode为完全匹配,-mode为包含即可)
  • -user:匹配所有者
  • -group:匹配所有组
  • -mtime -n +n:匹配修改的间(-n指n天以内,+n指n天以前)
  • atime -n +n:匹配访问文件的时间(-n指n天以内,+n指n天以前)
  • -ctime -n +n:匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
  • -nouser:匹配无所有者的文件
  • -nogroup:匹配无所有组的文件
  • -newer f1 !f2:匹配比文件f1新但比f2I旧的文件i
  • –type b/d/c/p/l/f:匹配文件类型
    (后面的字幕参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
  • -size:匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50K的文件)
  • -prune:忽略某个目录-exec…{}\;后面可跟用于进一步处理搜索结果的命令

Linux常用系统工作命令

reboot命令

reboot命令用于重启系统,其格式为reboot。

由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启,其命令如下:

[root@linuxprobe ~]# reboot
poweroff命令

poweroff命令用于关闭系统,其格式为poweroff。

该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑,其命令如下:

[root@linuxprobe ~]# poweroff
wget命令

wget命令用于在终端中下载网络文件。

语法:

wget [参数] 下载地址

参数:

  • -b:后台下载模式
  • -P:下载到指定目录
  • -t:最大尝试次数
  • -c:断点续传
  • -p:下载页面内所有资源,包括图片、视频等
  • -r:递归下载

Linux重定向、管道符、通配符和环境变量

image-20240117183022388

输入输出重定向

把多个Linux命令适当地组合到一起,使其协同工作,以便我们更加高效地处理数据。

  • 标准输入重定向(STDN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
  • 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
  • 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

输入重定向作用表

image-20240117183414542

输出重定向作用表

image-20240117183544952

管道命令符

image-20240117183738265

管道命令符的执行格式:命令A | 命令B

命令符的作用:把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入

实例1:

找出被限制登录用户的命令是 grep "/sbin/nologin" /etc/passwd
统计文本行数的命令则是 wc -l

现在要做的就是把搜索命令的输出值传递给统计命令,即把原本要输出到屏幂的用户信息列表再交给wc命令作进一步的加工,因此只需要把管道符放到两条命令之间即可,具体如下。这简直是太方便了!

grep "/sbin/nologin" /etc/passwd | wc -l

实例2:

这个管道符就像一个法宝,我们可以将它套用到其他不同的命令上,比如用翻页的形式查看/etc目录中的文件列表及属性信息(这些内容默认会一股脑儿地显示到屏幕上,根本看不清楚)

ls -l /etc/ | more

实例3:

在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和passwd命令的-stdin参数相结合,我们可以用一条命令来完成密码重置操作:

echo "linuxprobe" | passwd --stdin root

可以连续使用管道符

image-20240117184353923

命令行的通配符

通配符就是通用的匹配信息的符号。

星号*代表匹配零个或多个字符,

问号代表匹配单个字符,

中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符,

中括号内加上字母[abc]侧是代表匹配a、b、c三个字符中的任意一个字符。

重要的环境变量

在Liux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

  • 系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量
  • 用户级环境变量:每一个登录到系统的用户只能够读取属于自己的用户级的环境变量

自然而然地,环境变量的配置文件也相应的被分成了系统级和用户级两种。

系统级

/etc/profile

在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。

提示:

在Liux系统中,使用以下命令可以使配置文件立刻生效。

source /etc/profile
echo $PATH
用户级

~/.profile(推荐首选)

当用户登录时执行,每个用户都可以使用该文件来配置专属于自己使用的shell信息。

实例1:配置tomcat环境变量

vim /etc/profile

export TOMCAT_HOME=
export PATH=$PATH:$TOMCAT_HOME/bin

Linux磁盘管理

fdisk

查看分区

语法:

fdisk [必要参数] [选择参数]

必要参数:

  • -m:查看全部可用的参数
  • -n:添加新的分区
  • -d:删除某个分区信息
  • -l:列出所有可用的分区类型
  • -t:改变某个分区的类型
  • -p:查看分区信息
  • -w:保存并退出
  • -q:不保存直接退出

磁盘计算公式

一个磁盘的大小=一个柱面大小柱面的总数=磁头数量每个磁道上的扇区数一个扇区大小柱面总数

df

用于显示Liux系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。

语法:

df [选项] [目录或文件名]

选项:

  • -a:显示所有文件系统信息,包括系统特有的/proc、/sysfs等文件系统;
  • -m:以MB为单位显示容量:
  • -k:以KB为单位显示容量,默认以KB为单位;
  • -h:使用人们习惯的KB、MB或GB等单位自行显示容量;
  • -T:显示该分区的文件系统名称;
  • -i:不用硬盘容量显示,面是以盒有Qd日的数量来显示。
软硬方式链接

Linux系统中的“快捷方式”了。

在Linuⅸ系统中存在硬链接软链接两种文件。

硬链接:可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性我们不能跨分区对目录文件进行链接。

软链接:仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

In命令

In命令用于创建链接文件。

语法:

ln [选项] 目标

参数:

  • -s:创建“符号链接”(如果不带-s参数,则默认创建硬链接)
  • -f:强制创建文件或目录的链接
  • -i:覆盖前先询问
  • -v:显示创建链接的过程

Linux系统状态检测命令

image-20240117204456894

ip addr(ifconfig)命令

命令用于获取网卡配置与网络状态等信息。

uname命令

uname命令用于查看系统内核与系统版本等信息。

uname -a
Linux zk33.10.0-1160.e17.x8664#1 SMP Mon0ct1916:18:59 UTC 2020 x86_64 x86_64 x86_64 GMU/Linux

注意:

在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称,主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。

查看系统版本 cat /etc/redhat-release

free命令

free用于显示当前系统中内存的使用量信息。

free -h

image-20240117204912822

last命令

last命令用于查看所有系统的登录记录。

语法:

last [参数]

注意:

使用Iast命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。干万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!

history命令

history命令用于显示历史执行过的命令。

语法:

history [-c]

注意:

执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile文件中的HISTSIZE变量值。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。

uptime命令

uptime用于查看系统的负载信息,格式为uptime。

[root@niit opt]# uptime
17:56:03up7:14,2 users,1 oad average:0.02,0.02,0.05

注意:

uptime命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况;负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。

Linux下软件安装的命令

image-20240117205505268

源码安装

以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。

rpm软件包管理

image-20240117205749310

rpm安装软件的默认路径

注意:

  • /etc配置文件放置目录
  • /usr/bin一些可执行文件
  • /usr/lib一些程序使用的动态链接库
  • /usr/share/doc一些基本的软件使用手册与说明文件
  • /usr/share/man一些man page档案
常用的rpm软件包命令

image-20240117210004538

参数说明:

  • -i:install的意思,安装
  • -v:查看更详细的安装信息画面
  • -h:以安装信息栏显示安装进度
软件安装

如你需要安装一个jdk,首先要到网上下载一个jdk的rpm包,如jdk-8u171–linux-x64.rpm。安装并显示安装的进度,命令如下:

rpm -ivh package-name
卸载软件

使用rpm的卸载过程一定要由最上层往下卸载,以rp-pppoe为例,这个软件主要是依据ppp这个软件来安装的,所以当你要卸载ppp的时候,就必须先卸载rp-pppoe才行!

删除的命令非常简单,通过-e参数就可以完成。不过,经常生软件属性依赖导致无法删除某些软件的问题。

rpm -e package-name

直接强制删除

rpm -e --nodeps package-name
yum

yum可以看作是CS架构的软件,yum的存在很好的解决了rpm的属性依赖问题。

yum通过依赖rpm软件包管理器,实现了rpm软件包管理器在功能上的扩展,因此yum是不能脱离rpm而独立运行的。

image-20240117211130785

注意:

yum是一个在线软件管理工具,所以使用yum进行的操作大都是需要在联网的条件下才能正常使用。

YUM的配置文件

容器说明

虽然yum是你在联网后就能直接使用,不过,由于你系统的站点镜像没选择好,会导致连接速度非常慢!所以,这时候就需要我们去手动修改yum的设置文档了。

容器查询

首先,可以先查询一下目录yum server所使用的容器有哪些。

使用命令:yum repolist all,查询结果如下:

image-20240117211645248

如上图,只有当最右边的status为enabled该容器才算激活

/etc/yum.repos.d/里面会有多个配置文件(文件名以.repo结尾),yum会从里面逐查找,所以里面的容器名称不能有重复。

配置文件修改

打开配置文件:vim /etc/yum.repos.d/CenOS-Base.repo

实例1:配置阿里yum源

1:安装wget (如果已经安装了则省略)

yum install -y wget

2:备份 /etc/yum.repos.d/Centos-Base.repo文件

cd /etc/yum.repos.d/
mv Centos-Base.repo Centos-Base.repo.back

3:下载阿里云的Centos-7.repo文件

wget -0 Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

4:重新加载yum

yum clean all
yum makecache

5:检查配置的源是否是阿里的

cat /etc/yum.repos.d/Centos-Base.repo
yum使用手册

image-20240117212501766

小技巧:

使用参数-y,当遇到需要等待用户输入时,这个选项会提供yes的响应,如上面的例子可以写成:

yum install -y emacs

Linux下常用软件安装_MySql安装

安装MySQL

下载YUM库

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

安装YUM库

rpm -ivh mysql57-community-release-el7-10.noarch.rpm

安装数据库

yum -y install mysql-community-server

报错

image-20240117213430099

解决办法:不对gpg进行验证

ny install mysql-community-server --nogpgcheck

完成安装,重启mysql

systemctl restart mysqld

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

grep "password" /var/log/mysqld.log
[root@hadoop8 ~]# grep "password"/var/log/mysqld.log 
2018-10-13T08:33:27.994868Z 1 [Note]A temporary password is generated for root@localhost:yjov.Ow*ywPk

复制粘贴上边的密码进入数据库

mysql -uroot -p

输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库

修改密码命令:

mysql> ALTER USER 'root'@'localhost'IDENTIFIED BY '123456';
Your password does not satisfy the current policy requirements

解决报错如下

修改密码策略

因为当前的密码太复杂不方便后期做实验,所以使用命令修改密码策略两种方式

mysql> set global validate_password_policy=0;
Query OK,0 rows affected (0.00 sec)
mysql> set global validate_password_policy=LoW;
Query OK,0 rows affected (0.00 sec)
mysql>SET GLOBAL validate_password_length=6;
Query OK,0 rows affected (0.00 sec)

注:执行完初始化命令后需要输入数据库root用户密码

注:密码策略分四种

1、OFF(关闭) 2、LOw(低) 3、MEDIUM(中) 4、STRONG(强)

修改密码

mysql> ALTER USER 'root'@'localhost'IDENTIFIED BY '123456';
开启MySQL远程连接
mysql> select User,Host,Password from user;
mysql> update user set host ="%" where user "root";
# 刷新信息
mysq1> flush privileges;

Linux下常用软件安装_MySql卸载

检查是否安装了MySQL组件

[root@localhost ~]rpm -qa grep -i mysql
mysq157-community-release-el7-10.noarch
mysq1-community-libs-5.7.36-1.el7.x86_64
mysq1-community-server-5.7.36-1.el7.x86_64
mysql-community-common-5.7.36-1.el7.x86_64
mysq1-community-client-5.7.36-1.el7.x86_64
mysq1-community-libs-compat-5.7.36-1.el7.x86_6

卸载前关闭MySQL服务

systemctl stop mysqld
systemctl status mysqld

收集MySQL对应的文件夹信息

whereis mysql
mysql:/usr/bin/mysql /usr/1ib64/mysql /usr/share/mysql  /usr/share/man/man1/mysql.1.gz

卸载删除MySQL各类组件

rpm -ev --nodeps mysq157-community-release-el7-10.noarch
rpm -ev --nodeps mysq1-community-libs-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-server-5.7.36-1.e17.x86_64
rpm -ev --nodeps mysq1-community-common-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysq1-community-client-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-libs-compat-5.7.36-1.e17.x86_64

删除MySQL对应的文件夹

[root@DB-Server init.d]# whereis mysql
mysql:
[root@DB-Server init.d]# find /-name mysql
/var/lib/mysql
/var/1ib/mysql/mysql
/usr/lib64/mysql
[root@DB-Server init.d]# rm -rf /var/lib/mysql
[root@DB-server init.d]# rm -rf /var/lib/mysq1/mysql
[root@DB-Server init.d]# rm -rf /usr/lib64/mysql

删除mysql用户及用户组

[root@DB-Server init.d]# rpm -qa | grep -i mysql

Linux进程管理

ps

查看系统中所有进程

语法:

ps [options] [--help]

参数:

  • -a:显示所有进程(包括其他用户的进程)
  • -u:用户以及其他详细信息
  • -x:显示没有控制终端的进程

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • USER:行程拥有者

  • PID:pid

  • %CPU:占用的CPU使用率

  • %MEM:占用的记忆体使用率

  • VSZ:占用的虚拟记忆体大小

  • RSS:占用的记忆体大小

  • TTY:终端的次要装置号码(minor device number of tty)

  • STAT:该行程的状态:

  • D:无法中断的休眠状态(通常IO的进程)

  • R:正在执行中

  • S:静止状态

  • T:暂停执行

  • Z:不存在但暂时无法消除

  • W:没有足够的记忆体分页可分配

  • <:高优先序的行程

  • N:低优先序的行程

  • L:有记忆体分页分配并锁在记忆体内(实时系统或捱A/O)

  • START:行程开始时间

  • TIME:执行的时间

  • COMMAND:所执行的指令

image-20240117220916848

实例1:找出和cron与syslog这两个服务有关的PID号码。

[root@zk3 home]# ps -aux | egrep '(cron syslog)'
root 714 0.0 0.1 126388 1680? Ss Oct17 0:01 /usr/sbin/crond -n
root 1069 0.0 0.4 222780 4552? ssl Oct17 0:49 /usr/sbin/rsyslogd -n
root 15844 0.0 0.0 112808 988 pts/0 R+ 10:39 0:00 grep -E --color=auto (cron|syslog)

温馨提示:

egrep是grep的扩展和grep -e是一样的

grep中的匹配字符,全部当作字符串来处理,但是不支持正则表达式的特殊元字符

egrep可以支特元字符

^:指匹配的字符串在行首,

$:指匹配的字符串在行尾,

top

查看系统健康状态,windows加强版任务管理器

语法:

top [-d] | top [-bnp]

选项

  • -d:屏幕刷新间隔时间;
  • -p<进程号>:指定进程;

实例1:每2s更新一次top,观察整体信息。

top -d 2

top是一个不错的进程观察工具,但不同于ps是静态的结果输出。top这个进程可以持续地监测整个系统的进程的工作状态。

htop

htop的介绍

htop是Linux系统中的一个互动的进程查看器,与Linux传统的top比较的话,htop更人性化并且还支持鼠标操作!

htop的安装

# 安装epel源
yum install epel-release -y
# 安装htop
yum install -y htop
# 安装完毕后命令行输入
htop

image-20240117222438000

kill

终止进程,kill的应用是和ps或者grep命名结合在一起使用的。

语法:

kill [信号量] 进程ID

注:信号代码可以省略,常用的信号代码是-9,表示强制终止

实例1:终止所有的httpd进程。

ps auxf | grep httpd
kill -9 4158
netstat

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连以及每一个网络接口设备的状态信息。

语法:

netstat [选项]

实例1:列出所有端口

netstat -a  # 列出所有端口
netstat -at # 列出所有TCP端口
netstat -au # 列出所有UDP端口
netstat -ax # 列出所有unix端口
netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名

实例2:显示每个协议的统计信息

netstat -s  # 显示所有端口的统计信息
netstat -st # 显示所有TCP的统计信息
netstat -su # 显示所有UDP的统计信息

实例3:显示核心路由信息

netstat -r # 显示所有端口的统计信息
netstat -rn # 显示所有TCP的统计信息

Linux系统服务

image-20240117223234930

Service命令

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火墙等),因此我们又称为守护进程。

语法:

service 服务名 [start | stop | restart | reload | status]

注意:

service命令其实是去/etc/init.d目录下,去执行相关程序

实例1: 查看当前防火墙的状况,关闭防火墙和重启防火墙。

[root@zk3 ~]# service iptables status
Systemd命令

Linux的启动一直采用init进程。

sudo /etc/init.d/apache2 start
# 或者
service apache2 start

service两个缺点:

  • 一是启动时间长。init进程是串行启动只有前一个进程启动完,才会启动下一个进程。
  • 二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

Systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

systemctl

systemctl是Systemd的主命令,用于管理系统。

image-20240118160941097

systemd-analyze

systemd-analyze命令用于查看启动耗时。

# 查看启动耗时
$ systemd-analyze
# 查看每个服务的启动耗时
$ systemd-analyze blame
# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain
# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service
hostnamectl

hostnamectl命令用于查看当前主机的信息。

# 显示当前主机的信息
hostnamectl
# 设置主机名。
sudo hostnamect]set-hostname rhel7
timedatectl

timedatectl命令用于查看当前时区设置。

# 查看当前时区设置
timedatectl
# 显示所有可用的时区
$ timedatect list-timezones
# 设置当前时区
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS

Systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

  • systemctl 是Systemd的主命令管理系统
  • systemd-analyze 命令用于查看启动耗时。
  • hostnamectl 命令用于查看当前主机的信息。
  • localectl 命令用于查看本地化设置。
  • timedatectl 命令用于查看当前时区设置。
chkconfig

chkconfig命令用来更新、查询、改动不同执行级上的系统服务。比方安装了httpd服务,而且把启动的脚本放在了/etc/rc.d/init.d文件夹下,有时候须要开机自己主动启动它,而有时候则不须要,因此,就能够使chkconfig命令来进行控制。

选项:

  • –add:将相应的服务加入chkconfig管理
  • –del:将相应的服务从chkconfig管理中删除
  • –level:查看相应服的运级别

实例1:

列出chkconfig所知道的所有命令。

chkconfig --list

开启服务。

chkconfig telnet on  # 开启Telnet服务
chkconfig --list     # 列出chkconfig所知道的所有的服务的情况

关闭服务

chkconfig telnet off  # 关闭Telnet服务
chkconfig --list      # 列出chkconfig所知道的所有的服务的情况

systemctl置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

image-20240118162325324

经常使用服务介绍

amd:  # 自己主动安装网络文件系统守侯进程
apmd: # 高级电源管理
Arpwatch: # 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs: # 自己主动安装管理进程automount。与NFS相关,依赖于NIS
Bootparamd: # 引导參数server。为LAN上的无盘工作站提供引导所需的相关信息
crond: # 计划任务
Dhcpd: # 启动一个动态IP地址分配server
Gated: # 网关路由守候进程,使用动态的OSPF路由选择协议
Httpd: # WEBserver
Inetd: # 支持多种网络服务的核心守候程序
Innd:  # Usenet新闻server
Linuxconf: # 同意使用本地WEBserver作为用户接口来配置机器
Lpd:   # 打印server
Mars-nwe:  # mars-nwe文件和用于Nove1T的打印server
Mcserv:# Midnight命令文件server
named: # DNSserver
netfs: # 安装NFS、Samba和NetWare网络文件系统
network: # 激活己配置网络接口的脚本程序
nfs:   # 打开NFS服务
nscd:  # nscdserver,用于NTS一个支持服务,它快速缓存用户口令和组成成员关系
portmap: # RPC portmap管理器,与inetd相似,它管理基于RPc服务的连接
postgresq1: # 一种SQL数据库server。
routed: # 路由守候进程,使用动态RIP路由选择协议
rstatd: # 一个为LAN上的其他机器收集和提供系统信息的守候程序
ruserd: # 这是一个基于RPC的服务。它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld: # 这是一项基于RPC的服务。同意用户给每一个注冊到LAN机器的其他终端写消息
rwhod:  # 激活rwhod.服务进程。它支持LAN的rwho和ruptime服务
sendmail: # 邮件serversendmail
smb:      # Samba文件共享/打印服务
snmpd: # 本地简单网络管理候进程
squid: # 激活代理serversquid
syslog: # 一个让系统引导时起动sys1og和k1ogd系统日志守候进程的脚本
xfs: # X Window字型server,为本地和远程Xserver提供字型集
xntpd: # 网络时间server
ypbind: # 为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd: # NIS口令server
ypserv: # NIS主server
gpm: # 管鼠标的服务
identd: # AUTH服务。在提供用户信息方面与finger相似

Linux系统定时任务

什么是定时任务

定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。

为什么要用crond

计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。

计划任务主要分为以下两种使用情况:

  1. 系统级别的定时任务

    临时文件清理、系统信息采集、日志文件切割

  2. 用户级别的定时任务

    定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。

crontab配置文件

image-20240118163926164

crontab的时间编写规范
00 02 * * * ls   # 每天的凌晨2点整执行
00 02 1 * * ls    # 每月的1日的凌晨2点整执行
00 02 14 2 * ls  # 每年的2月14日凌晨2点执行
00 02 * * 7 ls   # 每周天的凌晨2点整执行
00 02 * 6 5 ls   # 每年的6月周五凌晨2点执行
00 02 14 * 7 ls  # 每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls  # 每年2月14日或每年2月的周天的凌晨2点执行

image-20240118164637041

crontab命令选项
-e # 编辑定时任务
-l # 查看定时任务
-r # 删除定时任务
-u # 指定其他用户
计划任务实践示例

假设在每周一、三、五的凌晨3点25分,都需要使用tr命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。

25 3 * * 1,3,5 /usr/bin/tar -zcvf backup.tar.gz /opt/wwwroot

Linux网络防火墙

image-20240118165106513

防火墙管理工具

image-20240118165212515

firewalld概述

Centos系统中集成了多款防火墙管理工具,其中firewalld服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式:

firewalld中常用的区域名称及测了规则

image-20240118170810943

firewalld防火墙的配置

使用firewall–cmd命令行工具。

使用firewall-config图形工具。

编写/etc/firewalld/中的配置文件

启动:systemctl start firewalld
关闭:systemct1 stop firewalld
查看状态:
systemctl status firewalld
firewall-cmd --state
开机禁用:systemctl disable firewalld
开机启用:systemct1 enable firewalld
终端管理工具

Liux命令时曾经听到,命令行终端是一种极富效率的工作方式,frewalld-cmd是firewalld防火墙配置管理工具的CLI(命令行界面)版本。

firewalld-cmd命令的参数以及作用

image-20240118170206573

image-20240118170235886

⚠️注意:

使用firewalld配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常设置防火墙策略时添加-permanent参数,这样配置的防火墙策略就可以永久生效了。

但是,永久生效模式有一个“不近人情“的特点,就是使用它设置的策略只有在系统重启之后才能自动生效:

区域管理示例

显示当前系统中的默认区域

firewall-cmd --get-default-zone

显示默认区域的所有规则

firewall-cmd --list-all

显示当前正在使用的区域及其对应的网卡接口

firewall-cmd --get-active-zones

设置默认区域

firewall-cmd --set-default-zone=home
端口管理示例

查看开启的端口列表

[root@localhost local]# firewall-cmd --zone=public --list-ports

开启某端口

[root@localhost local]# firewall-cmd --zone=public --add-port=8080/tcp
success

关闭某端口

[root@localhost local]# firewall-cmd --zone=public --remove-port=8080/tcp
success 
SELinux

安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个Linux内核模块,也是Linux的一个安全子系统。

SELinux主要由美国国家安全局开发。2.6及以上版本的Linux内核都已经集成了SELinux模块。

说明:

当您全神贯注地使用它给照片进行美颜的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情,SELinux安全子系统就是为了杜绝此类情况而设计的,它能够从多方面监控违法行为。

  1. 对服务程序的功能进行限制(确保程序干不了出格的事情)
  2. 对文件资源的访问资源限制(SELinux安全上下文确保文件资源只能被其他所属的服务程序进行访问)

SELinux服务有三种配置模式:

  • enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
  • permissive:遇到服务越权访问时,只发出警告而不强制拦截。
  • disabled:对于越权的行为不警告也不拦截。

image-20240118171908002

SELinux服务的主配置文件中,定义的是SELinux的默认运行状态,可以将其理解为系统重启后的状态,因此它不会在更改后立即生效。可以使用getenforce命令获得当前SELinux服务的运行模式:

[root@linuxprobe ~]# getenforce
Enforcing

注意:

修改SELinux当前的运行模式(0为禁用,1为启用)。这种修改只是临时的,在系统重启后就会失效:

setenforce 0
getenforce

Linux内核机制

Linux内核都有啥

image-20240118172225059

漫画赏析:Linux 内核到底长啥样https://linux.cn/article-8290-1.html

img

这幅漫画是以一个房子的侧方刨面图来绘画的。使用这样的一个房子来代表 Linux 内核。

地基

作为一个房子,最重要的莫过于其地基,在这个图片里,我们也从最下面的地基开始看起:

地基

地基(底层)由一排排的文件柜组成,井然有序,文件柜里放置着“文件”——电脑中的文件。左上角,有一只胸前挂着 421 号牌的小企鹅,它表示着 PID(进程 ID Process ID) 为 421 的进程,它正在查看文件柜中的文件,这代表系统中正有一个进程在访问文件系统。在右下角有一只小狗,它是看门狗watchdog ,这代表对文件系统的监控。

一层(地面层)

一层(地面层)

进程表

在这一层,最引人瞩目的莫过于中间的一块垫子,众多小企鹅在围着着桌子坐着。这个垫子的区域代表进程表。

左上角有一个小企鹅,站着,仿佛在说些什么这显然是一位家长式的人物,不过看起来周围坐的那些小企鹅不是很听话——你看有好多走神、自顾自聊天的——“喂喂,说你呢,哇塞娃(171),转过身来”。它代表着 Linux 内核中的初始化(init)进程,也就是我们常说的 PID 为 1 的进程。桌子上坐的小企鹅都在等待状态wait中,等待工作任务。

看门狗

瞧瞧,垫子(进程表)两旁有两只小狗,它会监控小企鹅的状态(监控进程),当小企鹅们不听话时,它就会汪汪地叫喊起来。

http 进程

在这层的左侧,有一只号牌为 1341 的小企鹅,守在门口,门上写着 80,说明这个 PID 为 1341 的小企鹅负责接待 80 端口,也就是我们常说的 HTTP (网站)的端口。小企鹅头上有一片羽毛,这片羽毛大有来历,它是著名的 HTTP 服务器 Apache 的 Logo。喏,就是这只:

apache logo

向右看,我们可以看到这里仍有一扇门,门上写着 21,但是,看起来这扇门似乎年久失修,上面的门牌号都歪了,门口也没人守着。看起来这个 21 端口的 FTP 协议有点老旧了,目前用的人也比以前少了,以至于这里都没人接待了。

无人看守的 FTP 进程

而在最右侧的一个门牌号 22 的们的待遇就大为不同,居然有一只带着墨镜的小企鹅在守着,看起来好酷啊,它是黑衣人叔叔吗?为什么要这么酷的一个企鹅呢,因为 22 端口是 SSH 端口,是一个非常重要的远程连接端口,通常通过这个端口进行远程管理,所以对这个端口进来的人要仔细审查。

SSH 守护进程

它的身上写着 52,说明它是第 52 个小企鹅。

到达文件系统

在图片的左上角,有一个向下台阶。这个台阶是底层(地基)的文件系统中的,进程们可以通过这个台阶,到文件系统中去读取文件,进行操作。

Cron 任务

在这一层中,有一个身上写着 217 的小企鹅,他正满头大汗地看着自己的手表。这只小企鹅就是定时任务(Crontab),他会时刻关注时间,查看是否要去做某个工作。

管道

在图片的中部,有两个小企鹅扛着管道(PipeLine)在行走,一只小企鹅可以把自己手上的东西通过这个管道,传递给后面的小企鹅。不过怎么看起来前面这种(男?)企鹅累得满头大汗,而后面那只(女?)企鹅似乎游刃有余——喂喂,前面那个,裤子快掉了~

Wine

在这一层还有另外的一个小企鹅,它手上拿着一杯红酒,身上写着 411,看起来有点不胜酒力。它就是红酒(Wine)小企鹅,它可以干(执行)一些来自 Windows 的任务。

跃层

在一层之上,还有一个跃层,这里有很多不同的屏幕,每个屏幕上写着 TTY(这就是对外的终端)。比如说最左边 tty4 上输入了“fre”——这是想输入“freshmeat…”么 :d ;它旁边的 tty2 和 tty3 就正常多了,看起来是比较正常的命令;tty7 显示的图形界面嗳,对,图形界面(X Window)一般就在 7 号终端;tty5 和 tty6 是空的,这表示这两个终端没人用。等等,tty1 呢?

跃层

tty(终端)是对外沟通的渠道之一,但是,不是每一个进程都需要 tty,某些进程可以直接通过其他途径(比如端口)来和外部进行通信,对外提供服务的,所以,这一层不是完整的一层,只是个跃层。

好了,我们有落下什么吗?

小丑?

这小丑是谁啊?

啊哈,我也不知道,或许是病毒?你说呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三水编程

感谢客官打赏~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值