Linux基础命令、服务管理、yum软件包管理

Linux入门篇

Linux发行版

CentOS是一款流行的开源Linux发行版,是RHEL(Red Hat Enterprise Linux)源代码经过再编译而成。【Red Hat】

Ubuntu是最热门的Linux发行版之一,是一款开放源代码的免费软件,基于Debian Linux操作系统,其易用性和稳定性均非常出色,并且拥有非常强大成熟的社区资源。【Debian】

CentOS版本选择和下载(目前不再使用虚拟机管理软件和下载ISO镜像,直接使用云服务器)

版本:CentOS 7.6(重装系统)

使用远程登录软件登录Linux实例

前提条件:1、已获取登录实例的用户名及密码(或密钥),首次通过本地远程登录软件登录Linux实例之前,需要重置用户名(如rootubuntu)的密码,或者绑定密钥;2、确认本地计算机和实例之间网络连通正常,以及实例的防火墙已放行22端口。(来自腾讯云)

以上是通过软件工具连接的方式,正常情况下是通过ssh username@hostname/ip命令的方式登录机器。

Linux基础篇

Linux文件系统和目录结构

Linux的文件系统是采用层级式的树状目录结构,最上层是根目录/,然后在此目录下创建其他目录。

在Linux世界里,一切皆文件。

目录功能
/bin(/usr/bin)、/sbin(/usr/sbin)常用命令、系统管理员使用的系统管理程序
/etc系统配置文件
/home、/root所有普通用户的家目录、管理员用户的家目录
/boot系统启动时使用的核心文件
/dev设备挂载,Linux把设备映射为文件进行管理,类似于Windows的设备管理器
/lib系统开机所需要的动态连接共享库
/lost+found当系统非法关机后存放一些文件
/usr用户的应用程序和文件存放目录,类似Windows的Program files目录
/tmp存放临时文件
/mediaLinux系统会自动识别一些设备,u盘等,把设备挂载在该目录下
/mnt让用户临时挂载别的文件系统,可以将外部存储挂载,共享目录
/opt软件安装包位置
/var存放不断扩充的东西,习惯将经常被修改的目录放在这里,如日志文件

Vi、Vim编辑器

Linux系统会内置vi文本编辑器,类似于Windows的记事本。

Vim具有程序编写的能力,可以看做是vi的增强版本,以字体颜色辨别语法的正确性。

三种模式:

  • 正常模式:以Vim打开一个文件直接进入正常模式,可以使用【上下左右】移动光标;
  • 插入模式:按下I字母后进入编辑模式;
  • 命令行模式:当你处于正常模式时,按下:可以进入退出/查看行号等选项;按/可以进入查找模式;

从插入模式或者命令行模式退出到正常模式按下ESC

入门案例:使用Vim开发一个HelloWorld.java程序,存放在/tmp/linux_hsp目录下。

在实际工作场景中,使用较多的是文件查看、搜索关键信息,使用vi命令会将整个文件加载进内存,不推荐,查看小文件使用vi命令时,进入命令行模式搜索。

快捷键使用:(拷贝、删除忽略)

  • 在文件中查找某个单词【命令行下/关键字,回车查找,按下N查找下一个】
  • 设置文件的行号,取消文件的行号【命令行下: set nu: set nonu
  • 使用快捷键到文档的最末行【G】和最首行【gg

网络配置

网络配置之配置主机名

hostname:查看当前服务器的主机名称,可通过编辑/etc/hostname文件进行修改。

系统和服务管理

Linux服务管理,服务的本质是进程

  • 一个正在执行的程序叫作"进程"(Process)

  • 启动后一直常驻内存的进程,被称为"服务"(Service),运行在后台,通常都会监视某个端口,等待其他程序的请求,比如MySQL、sshd、防火墙等属于服务,又称守护进程

在这里插入图片描述

service服务管理(以下的service命令属于CentOS 6版本范畴,7版本可以忽略)

查看服务的方法:cd /etc/init.d

  • service servicename start | stop | restart | status

systemctl服务管理(以下的systemctl命令属于CentOS 7版本范畴,重点掌握)

查看服务的方法:cd /usr/lib/systemd/system,此刻共计284个服务。

systemctl start | stop | restart | status servicename

[root@VM-16-8-centos system]# pwd
/usr/lib/systemd/system
[root@VM-16-8-centos system]# ll | wc -l
284
[root@VM-16-8-centos system]# ls | grep firewall
firewalld.service
[root@VM-16-8-centos system]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

systemctl stop network:关闭网络服务,这样在网络上这台机器就无法被找到,同样也无法访问外网

vendor preset:预设的值

chkconfig设置后台服务的自启动配置(以下的chkconfig命令属于CentOS 6范畴,7版本可以忽略)

[root@VM-16-8-centos system]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 查看哪些服务属于自启动

systemctl设置后台服务的自启动配置(以下的systemctl命令属于CentOS 7版本范畴,重点掌握)

systemctl enable servicename:配置开机自启动;

systemctl disable servicename:配置开机非自启动;

systemctl list-unit-files:查看systemctl管理的服务以及其是否是开机自启的,enabled自启动,disabled非自启动,static依赖其他服务,暂时无法确定是否自启动,grep xxx过滤查看某个服务是否是开机自启的

所以,systemctl命令不仅可以管理服务的启动关闭状态,还可以管理服务的开机自启动配置。

防火墙服务

systemctl status firewalld,inactive是关闭的,并且是非自启动的,d代表守护进程Daemon。

[root@VM-16-8-centos system]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@VM-16-8-centos system]# systemctl list-unit-files | grep firewalld
firewalld.service                             disabled

这里其实涉及两个知识点:防火墙是否自启动(否),防火墙现在是否打开/开启(否)。

在这里插入图片描述

基本命令

命令功能
systemctl start firewalld开启防火墙
systemctl enable firewalld开启开机自启防火墙
systemctl stop firewalld关闭防火墙
systemctl disable firewalld开机自动关闭防火墙
firewall-cmd --state查看防火墙状态
firewall-cmd --zone=public --list-all列出关于public域的服务设置
firewall-cmd --query-port=端口/协议查询端口是否开放

https://blog.csdn.net/meltsnow/article/details/88392497,详细的防火墙设置博客

对于防火墙问题,

1、操作系统的防火墙对端口开放

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

2、在腾讯云轻量级应用服务器中配置防火墙,放开端口

3、端口通常是与服务绑定的,即使你开通了端口,服务没有启动,还是不能telnet ip port到,所以必须启动对应的服务,比如

systemctl status sshd
systemctl status mysqld.service

都必须是启动的状态,然后才能telnet到。

[root@VM-16-8-centos ~]# firewall-cmd --zone=public --add-port=2181/tcp --permanent
success
[root@VM-16-8-centos ~]# firewall-cmd --reload
success
[root@VM-16-8-centos ~]# firewall-cmd --zone=public --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client http ssh
  ports: 3306/tcp 6379/tcp 8090/tcp 2181/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

系统运行级别

Linux系统有7种运行级别,常用的是级别3和5,级别越高支持的功能越丰富。

  • 运行级别3:完全的多用户状态,登录后进行控制台命令行模式
  • 运行级别5:登录后进入图形GUI模式

CentOS 7的运行级别简化为:

  • multi-user.target 等价于原运行级别3
  • graphical.target 等价于原运行级别5
[root@VM-16-8-centos system]# systemctl get-default
multi-user.target

关机&重启命令

  • shutdown -h now:立刻进行关机
  • shutdown -r now:现在重新启动计算机
  • halt:关机
  • reboot:重启
  • sync:把内存的数据同步到磁盘
    • 无论是重启还是关闭系统,首先要运行sync命令,目前的shutdown/halt/reboot等命令均已在关机重启前进行了sync

用户登录和注销

登录时建议少用root账号登录,因为是系统管理员,最大的权限,可以使用普通用户登录,登录后再用su - username命令切换成系统管理员身份。

输入logout即可注销用户,或者可以从root用户登录退出到普通用户登录。

logout注销指令在图形运行级别下无效,在运行级别3下有效。

Linux实操篇

Shell 可以看作一个命令解释器,为我们提供了交互式的文本控制界面。

我们可以通过终端来输入命令,由Shell进行解释并最终交给内核执行。

帮助命令

man [命令或配置文件]:获取帮助信息

空格只能向下翻页,PageUp向上翻页或者PageDown向下翻页,q退出

man ls

ls [OPTION]... [FILE]...
ls -l /root

help 命令:获取Shell内置命令的帮助信息

help cd

type 命令:判断一个命令是否是Shell内置命令

type cd

history 命令:查看历史键入的命令

history n:查看最近的n条命令

常用快捷键

常用快捷键功能
ctrl + c停止进程
clear清屏
tab提示键
上下键查找历史命令

文件目录类

pwd 命令:显示当前工作目录的绝对路径

cd 命令:切换到指定目录

cd ~ 或者 cd :回到用户的家目录

cd … :回到当前目录的上一级目录

mkdir 命令:创建目录

-p选项:创建多级目录

rmdir 命令:删除空目录

注意,这个命令只能删除空目录,如果目录下有文件是无法删除的

要删除非空目录,使用 rm -rf 目录

touch 命令:创建空文件

cp 命令:拷贝文件到指定目录

cp [选项] source target

-r选项:递归复制整个文件夹

[root@VM-16-8-centos hsp_linux_tmp]# touch HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# cp HelloWorld.java /root/hsp_linux_tmp/tem/test/
[root@VM-16-8-centos hsp_linux_tmp]# cd tem/test/
[root@VM-16-8-centos test]# ls
HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# cp -r tem/ /root/
[root@VM-16-8-centos hsp_linux_tmp]# cd /root/
[root@VM-16-8-centos ~]# ls
dump.rdb  halo-1.4.17.jar  hsp_linux_tmp  myredis  nohup.out  tem

rm 命令:删除文件或者目录

-r:递归删除整个文件夹

-f:强制删除,不会提示

mv 命令:剪切文件与目录 或 重命名

[root@VM-16-8-centos test]# mv HelloWorld.java HelloLinux.java
[root@VM-16-8-centos test]# ls
HelloLinux.java
[root@VM-16-8-centos test]# mv HelloLinux.java ../
[root@VM-16-8-centos test]# ls
[root@VM-16-8-centos test]# cd ..
[root@VM-16-8-centos tem]# ls
HelloLinux.java  test

cat 命令:查看文件内容

-n:显示行号

more 命令:以全屏幕的方式按页显示文本文件的内容,存在交互指令,了解即可,实际用less

more 和 less的区别

1:less可以键盘上下键显示上下内容,而more不能通过上下方向键控制显示

2:less不必读整个文件,加载速度会比more更快

3:less退出后Shell不会留下显示的内容,而more退出后会留下显示的内容

4:阅读到文件结束时,less不会退出,而more会

5:相比more,less提供更加友好的检索、高亮显示等操作

less 命令:分屏查看文件内容,在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据需要加载,对于大型文件效率较高

指令功能说明
空格键向下翻动一页
PageUp向上翻动一页
PageDown向下翻动一页
/字符串向下搜索指定文本,n:向下查找,N:向上查找
?字符串向上搜索指定文本,n:向上查找,N:向下查找
G/g移动到最后/第一行
q退出

echo 命令:输出内容到控制台

head 命令:显示文件的开头部分,默认情况下显示文件的前十行

-n:指定行数

[root@VM-16-8-centos etc]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk-11.0.14/bin:/usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin:/root/bin
[root@VM-16-8-centos etc]# echo $HOSTNAME
VM-16-8-centos
[root@VM-16-8-centos etc]# head -n 10 /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

tail 命令:输出文件中尾部的内容,默认情况下显示文件的后十行

-n:指定行数

-f:实时追踪该文件的实时更新,比如服务上线后日志文件的新日志

> 命令:输出重定向,覆盖写

>> 命令:追加文件

[root@VM-16-8-centos hsp_linux_tmp]# cat HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# echo 'public class HelloWorld {' > HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# ls -l >> HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# cat HelloWorld.java
public class HelloWorld {
total 8
-rw-r--r-- 1 root root   26 Jul 10 12:00 HelloWorld.java
drwxr-xr-x 3 root root 4096 Jul  9 11:13 tem

ln 命令:软链接,也叫符号链接,类似于Windows的快捷方式,主要存放链接其他文件的路径

ln -s [原文件或目录] [软链接名]:为原文件创建一个软链接

[root@VM-16-8-centos /]# ll -h
total 72K
lrwxrwxrwx.  1 root root    7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.  5 root root 4.0K Apr  9 14:00 boot
drwxr-xr-x   2 root root 4.0K Nov  5  2019 data
drwxr-xr-x  19 root root 3.0K May 21 19:17 dev
drwxr-xr-x. 93 root root  12K Jul  6 14:50 etc
drwxr-xr-x.  3 root root 4.0K Apr  9 13:59 home
lrwxrwxrwx.  1 root root    7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.  1 root root    9 Mar  7  2019 lib64 -> usr/lib64
[root@VM-16-8-centos /]# cd bin
[root@VM-16-8-centos bin]# pwd
/bin

当我们使用pwd查看目录时,仍然看到的是软链接所在目录

时间日期类

date 命令:显示当前日期,了解即可

[root@VM-16-8-centos ~]# date
Sun Jul 10 12:31:52 CST 2022
[root@VM-16-8-centos ~]# date '+%Y-%m-%d %H:%M:%S'
2022-07-10 12:33:00

cal 命令:查看日历,默认显示本月日历

cal 2022:显示2022年日历

用户权限类

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

工作中类似,存在root、work、rd(普通用户)三种身份

useradd 命令:添加用户

useradd 用户名:默认该用户的家目录在/home/目录下

passwd 命令:指定/修改密码

passwd 用户名

userdel 命令:删除用户

userdel 用户名:删除用户,但是保留家目录

userdel -r 用户名:删除用户以及用户家目录

id 命令:查询用户信息指令

id 用户名:当用户不存在时,返回无此用户

[root@VM-16-8-centos ~]# id rd
uid=1001(rd) gid=1001(rd) groups=1001(rd)
[root@VM-16-8-centos ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@VM-16-8-centos ~]# id lighthouse
uid=1000(lighthouse) gid=1000(lighthouse) groups=1000(lighthouse)
[root@VM-16-8-centos ~]# id tom
id: tom: no such user

su 命令:切换用户

在操作Linux中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户,比如work、root

su - 切换用户名

  • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
  • 当需要返回到原来用户时,使用logout指令

whoami/who am i 命令:查看当前登录用户

whoami:显示当前登录用户

who am i:显示首次登录的用户(尽管中间切换了很多用户)

用户组:类似于角色,系统可以对有共性的多个用户进行统一的管理。

groupadd 命令:新增组

groupdel 命令:删除组

groupadd 组名

groupdel 组名

useradd -g 用户组 用户名:增加用户时直接加上组

usermod 命令:修改用户的组

usermod -g 用户组 用户名

用户和组相关的文件

/etc/passwd文件:用户(user)的配置文件,记录用户的各种信息

/etc/shadow文件:口令的配置文件

/etc/group文件:组(group)的配置文件,记录Linux包含的组的信息

Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念。

文件/目录所有者一般为创建者,谁创建了该文件,自然成为文件的所有者。

chown 命令:修改文件所有者

chown 用户名 文件名

[root@VM-16-8-centos hsp_linux_tmp]# ll -h
total 12K
-rw-r--r-- 1 root root  339 Jul 13 00:35 hello.tar.gz
-rw-r--r-- 1 root root  368 Jul 16 22:30 HelloWorld.java
drwxr-xr-x 3 root root 4.0K Jul 13 00:46 tem
[root@VM-16-8-centos hsp_linux_tmp]# chown rd HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# ll -h
total 12K
-rw-r--r-- 1 root root  339 Jul 13 00:35 hello.tar.gz
-rw-r--r-- 1 rd   root  368 Jul 16 22:30 HelloWorld.java
drwxr-xr-x 3 root root 4.0K Jul 13 00:46 tem

当某个用户创建了一个文件后,该文件所在组就是该用户所在组。

chgrp 命令:修改文件所在组

chgrp 组名 文件名

[root@VM-16-8-centos hsp_linux_tmp]# chgrp rd HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# ll -h
total 12K
-rw-r--r-- 1 root root  339 Jul 13 00:35 hello.tar.gz
-rw-r--r-- 1 rd   rd    368 Jul 16 22:30 HelloWorld.java
drwxr-xr-x 3 root root 4.0K Jul 13 00:46 tem

其他组:除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

chown 用户名:组名 文件名:修改文件所有者和所在组

-R:如果是目录,则使其下所有子文件或目录递归生效

权限基本介绍:

-rw-r--r-- 1 rd   rd    368 Jul 16 22:30 HelloWorld.java
# 0~9位:第0位确定文件类型(d、-、l、c、b)
# -是普通文件,l是链接,d是目录,c是字符设备文件,鼠标、键盘,b是块设备,硬盘
# 第1~3位确定所有者拥有该文件的权限---User
# 第4~6位确定所属组拥有该文件的权限---Group
# 第7~9位确定其他用户拥有该文件的权限---Other

rwx权限详解:

  • rwx作用到文件
    • r代表可读:读取、查看
    • w代表可写:修改,但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才可以删除文件
    • x代表可执行:执行
  • rwx作用到目录
    • r代表可读,读取,ls查看目录内容
    • w代表可写,修改,对目录内创建、删除、重命名目录
    • x代表可执行,进入该目录

用数字表示为:r=4,w=2,x=1,因此rwx=4+2+1=7

chmod 命令:修改文件或者目录的权限

第一种方式:+、-、= 变更权限

u:所有者、g:所属组、o:其他人、a:所有人
chmod u=rwx,g=rx,o=x 文件/目录名

chmod u+w,o+x 文件/目录名

chmod a-x 文件/目录名

第二种方式:通过数字变更权限

chmod u=rwx,g=rx,o=x 文件/目录名

相当于:chmod 751 文件/目录名

搜索查找类

find 命令:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端

find [搜索范围] [选项]

-name:按照指定文件名查找文件

-user:查找属于指定用户名的所有文件

-size:按照指定的文件大小查找文件,+n大于n,-n小于n,n等于n,单位有K、M、G

[root@VM-16-8-centos ~]# find / -name "*.java"
/usr/share/doc/python2-cryptography-1.7.2/docs/development/custom-vectors/rsa-oaep-sha2/VerifyRSAOAEPSHA2.java
/usr/share/bison/lalr1.java
/root/hsp_linux_tmp/HelloWorld.java
/root/hsp_linux_tmp/tem/HelloLinux.java
[root@VM-16-8-centos ~]# find /root -user root | wc -l
1427
[root@VM-16-8-centos ~]# find / -size +100M
/opt/mysql-community-server-8.0.25-1.el7.x86_64.rpm
/opt/jdk-11.0.14_linux-x64_bin.tar.gz
/usr/lib/locale/locale-archive
/usr/local/java/jdk-11.0.14/lib/modules
/usr/local/qcloud/YunJing/YDVulner/yhvs/Packages
/usr/sbin/mysqld-debug
/usr/sbin/mysqld
/proc/kcore
/var/lib/rpm/Packages

wc 命令:统计文本文件的行数

-l:统计文本内容输出的行数

[root@VM-16-8-centos hsp_linux_tmp]# wc -l HelloWorld.java
8 HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# cat -n HelloWorld.java
     1  public class HelloWorld {
     2  total 8
     3  -rw-r--r-- 1 root root   26 Jul 10 12:00 HelloWorld.java
     4  drwxr-xr-x 3 root root 4096 Jul  9 11:13 tem
     5  Sun Jul 10 20:38:31 CST 2022
     6  Sun Jul 10 22:30:01 CST 2022
     7  Mon Jul 11 22:30:01 CST 2022
     8  Tue Jul 12 22:30:01 CST 2022

locate 命令:快速定位文件路径,该指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件,无需遍历整个文件系统,查询速度较快

由于locate指令基于数据库查询,所以第一次运行前,必须使用updatedb指定创建locate数据库

[root@VM-16-8-centos ~]# updatedb
[root@VM-16-8-centos ~]# locate HelloWorld.java
/root/hsp_linux_tmp/HelloWorld.java

which 命令:查看某个指令位于哪个目录下

which ps

grep 命令:过滤查找

管道符|:表示将前一个命令的处理结果输出传递给后面的命令处理

grep [选项] 查找内容 源文件

-i:忽略字母大小写

-n:显示匹配行及行号

[root@VM-16-8-centos ~]# grep -in 'class' /root/hsp_linux_tmp/HelloWorld.java
1:public class HelloWorld {
[root@VM-16-8-centos ~]# grep -in '2022' /root/hsp_linux_tmp/HelloWorld.java
5:Sun Jul 10 20:38:31 CST 2022
6:Sun Jul 10 22:30:01 CST 2022
[root@VM-16-8-centos ~]# cat -n /root/hsp_linux_tmp/HelloWorld.java
     1  public class HelloWorld {
     2  total 8
     3  -rw-r--r-- 1 root root   26 Jul 10 12:00 HelloWorld.java
     4  drwxr-xr-x 3 root root 4096 Jul  9 11:13 tem
     5  Sun Jul 10 20:38:31 CST 2022
     6  Sun Jul 10 22:30:01 CST 2022
[root@VM-16-8-centos ~]# cat /root/hsp_linux_tmp/HelloWorld.java | grep -in 'class'
1:public class HelloWorld {

压缩解压类

gzip/gunzip 命令:用于压缩/解压文件,压缩文件只能压缩为*.gz文件

只能压缩文件,不能压缩目录

压缩后不保留原文件

多个文件会产生多个压缩包

[root@VM-16-8-centos tem]# ls
HelloLinux.java  test
[root@VM-16-8-centos tem]# gzip HelloLinux.java
[root@VM-16-8-centos tem]# ls
HelloLinux.java.gz  test
[root@VM-16-8-centos tem]# gunzip HelloLinux.java.gz
[root@VM-16-8-centos tem]# ls
HelloLinux.java  test

zip/unzip 命令:用于压缩/解压文件或目录,在项目打包发布中有用

zip [选项] Xxx.zip 待压缩内容

-r:压缩目录

压缩后保留原文件

unzip [选项] Xxx.zip

-d:指定解压后文件的存放目录

[root@VM-16-8-centos hsp_linux_tmp]# ls
HelloWorld.java  tem
[root@VM-16-8-centos hsp_linux_tmp]# zip -r tem.zip tem/
  adding: tem/ (stored 0%)
  adding: tem/HelloLinux.java (stored 0%)
  adding: tem/test/ (stored 0%)
[root@VM-16-8-centos hsp_linux_tmp]# ls
HelloWorld.java  tem  tem.zip
[root@VM-16-8-centos hsp_linux_tmp]# mkdir haha
[root@VM-16-8-centos hsp_linux_tmp]# unzip -d /root/hsp_linux_tmp/haha/ tem.zip
Archive:  tem.zip
   creating: /root/hsp_linux_tmp/haha/tem/
 extracting: /root/hsp_linux_tmp/haha/tem/HelloLinux.java
   creating: /root/hsp_linux_tmp/haha/tem/test/
[root@VM-16-8-centos hsp_linux_tmp]# ls
haha  HelloWorld.java  tem  tem.zip

tar 命令:打包,压缩后的文件格式为*.tar.gz,通过选项指定是压缩还是解压

tar [选项] Xxx.tar.gz 待打包的内容

-z:调用gzip、gunzip执行压缩或解压

-x:解包.tar文件

-v:显示详细信息

-f:指定压缩后的文件名

-c:创建新的.tar打包文件

-C:解压到指定目录

# 压缩多个文件、目录,tar -zcvf xxx.tar.gz ./*.txt 当前目录下所有txt文件打包并压缩
[root@VM-16-8-centos hsp_linux_tmp]# tar -zcvf hello.tar.gz HelloWorld.java tem
HelloWorld.java
tem/
tem/HelloLinux.java
tem/test/
[root@VM-16-8-centos hsp_linux_tmp]# ls
hello.tar.gz  HelloWorld.java  tem  tem.zip
# 解压hello.tar.gz到xxx目录下
[root@VM-16-8-centos hsp_linux_tmp]# ls
hello.tar.gz  HelloWorld.java
[root@VM-16-8-centos hsp_linux_tmp]# mkdir tem
[root@VM-16-8-centos hsp_linux_tmp]# tar -zxvf hello.tar.gz -C /root/hsp_linux_tmp/tem/
HelloWorld.java
tem/
tem/HelloLinux.java
tem/test/
[root@VM-16-8-centos hsp_linux_tmp]# ls -lh ./tem/
total 8.0K
-rw-r--r-- 1 root root  252 Jul 12 22:30 HelloWorld.java
drwxr-xr-x 3 root root 4.0K Jul 13 00:18 tem

磁盘管理类

在磁盘管理类中,只需要学习磁盘情况查询的命令,比如有时一台机器上部署的多个服务,其他服务的dump内存文件占用空间较多,可能导致自己的服务部署时出现问题,所以需要学习相关的磁盘管理命令。

lsblk 命令:查看所有设备挂载情况

[root@VM-16-8-centos /]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 159.1M  0 rom
vda    253:0    0    50G  0 disk
└─vda1 253:1    0    50G  0 part /
[root@VM-16-8-centos /]# lsblk -f
NAME   FSTYPE  LABEL    UUID                                 MOUNTPOINT
sr0    iso9660 config-2 2022-04-09-14-05-17-00
vda
└─vda1 ext4             4b499d76-769a-40a0-93dc-4a31a59add28 /

分区会挂载到目录上,vda,a代表第一块硬盘,1代表第一块硬盘的第一个分区

对于挂载、卸载、磁盘分区的实操可以暂不掌握

df 命令:disk free查询系统整体磁盘使用情况

[root@VM-16-8-centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        908M     0  908M   0% /dev
tmpfs           919M   24K  919M   1% /dev/shm
tmpfs           919M  740K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        50G  7.9G   40G  17% /
tmpfs           184M     0  184M   0% /run/user/0

du 命令:disk usage查询指定目录的磁盘占用情况

-h:以GB、MB、KB等格式显示

-a:不仅查看子目录大小,还包括文件

-s:只显示总和

–max-depth=n:指定统计子目录的深度为第n层

[root@VM-16-8-centos ~]# du -sh /opt
647M    /opt
[root@VM-16-8-centos ~]# du -sh /root
130M    /root
[root@VM-16-8-centos ~]# du -h --max-depth=1 /opt
4.0K    /opt/rh
64K     /opt/mellanox
4.1M    /opt/containerd
647M    /opt
[root@VM-16-8-centos opt]# du -ah --max-depth=1 /opt
1016K   /opt/nginx-1.17.10.tar.gz
2.0M    /opt/redis-5.0.14.tar.gz
4.0K    /opt/rh
428M    /opt/mysql-community-server-8.0.25-1.el7.x86_64.rpm
192K    /opt/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
46M     /opt/mysql-community-client-8.0.25-1.el7.x86_64.rpm
161M    /opt/jdk-11.0.14_linux-x64_bin.tar.gz
616K    /opt/mysql-community-common-8.0.25-1.el7.x86_64.rpm
64K     /opt/mellanox
4.1M    /opt/containerd
4.1M    /opt/mysql-community-libs-8.0.25-1.el7.x86_64.rpm
647M    /opt

磁盘实用指令

# 统计/opt目录下文件的个数,grep支持正则表达式,^-表示以-开头
[root@VM-16-8-centos opt]# ll -h | grep '^-' | wc -l
8
# 统计/opt目录下文件夹的个数
[root@VM-16-8-centos opt]# ll -h | grep '^d' | wc -l
3
# 统计/opt目录下文件的个数,包括子文件夹下的,大写的R,递归
[root@VM-16-8-centos opt]# ll -hR /opt | grep '^-' | wc -l
9
# 以树状显示目录结构
[root@VM-16-8-centos opt]# tree /opt/
-bash: tree: command not found
[root@VM-16-8-centos opt]# yum -y install tree
...
[root@VM-16-8-centos opt]# tree /opt/
...
19 directories, 9 files

进程管理类

在Linux中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号(pid,进程号)。

每个进程可能以前台或后台两种方式存在。所谓前台进程就是用户屏幕上可以操作的,后台进程是实际在运行但屏幕上无法看到的进程,通常使用后台方式执行。

ps 命令:查看当前系统进程状态

-aux | grep xxx:查看系统中所有进程

-ef | grep xxx:以全格式显示当前所有的进程,查看进程的父进程

​ -e:显示所有进程;-f:全格式

[root@VM-16-8-centos ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
# UID用户ID,PID进程ID,PPID父进程ID,C用于计算执行优先级的因子,数值越大,表示进程是CPU密集型运算,执行优先级会降低;数值越小,表示进程是IO密集型运算,执行优先级会提高,STIME进程启动时间,TTY完整的终端名称,TIME CPU执行时间,CMD启动进程所用的命令和参数
[root@VM-16-8-centos ~]# ps -ef | grep redis
root     14830     1  0 Jun05 ?        00:46:32 redis-server 0.0.0.0:6379
root     14900 32616  0 13:17 pts/0    00:00:00 grep --color=auto redis

kill 命令:如果某个进程执行到一半需要停止,或者是已经消耗了很大的系统资源,此时可以停止该进程

kill [选项] 进程号:通过进程号终止进程

-9:强迫进程立即停止

killall 进程名称:通过进程名称终止进程

案例:踢掉某个非法登录用户

[root@VM-16-8-centos ~]# ps -aux | grep sshd
root      1007  0.0  0.1 112984  3352 ?        Ss   May21   0:17 /usr/sbin/sshd -D
root     29914  0.0  0.3 157180  6084 ?        Ss   18:52   0:00 sshd: root@pts/0
root     29921  0.0  0.3 156848  5732 ?        Ss   18:52   0:00 sshd: root@notty
root     31931  0.0  0.0 112812   980 pts/0    R+   19:05   0:00 grep --color=auto sshd
[root@VM-16-8-centos ~]# kill -9 29921
[root@VM-16-8-centos ~]# ps -aux | grep sshd
root      1007  0.0  0.1 112984  3352 ?        Ss   May21   0:17 /usr/sbin/sshd -D
root     29914  0.0  0.3 157180  6084 ?        Ss   18:52   0:00 sshd: root@pts/0
root     32010  0.0  0.0 112812   980 pts/0    R+   19:06   0:00 grep --color=auto sshd

pstree 命令:查看进程树

-p:显示进程的PID

-u:显示进程所属用户

top 命令:实时监控系统及进程状态

在这里插入图片描述

进程状态默认按照CPU占比排序,load average:最近1min、5mins、15mins的CPU负载,zombie僵死进程,VIRT虚拟内存占用,RES物理内存占用

-p:通过指定进程ID来仅仅监控某个进程的状态

q:退出

netstat 命令:显示网络状态和端口占用信息

-anp | grep 进程号:查看该进程网络信息

-nlp | grep 端口号:查看网络端口号占用情况

[root@VM-16-8-centos ~]# netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1007/sshd
tcp        0      0 10.0.16.8:22            171.113.164.39:8541     ESTABLISHED 9603/sshd: root@not
tcp        0      0 10.0.16.8:22            171.113.164.39:8538     ESTABLISHED 9596/sshd: root@pts
tcp        0     48 10.0.16.8:22            171.113.164.39:7953     ESTABLISHED 29914/sshd: root@pt
tcp6       0      0 :::22                   :::*                    LISTEN      1007/sshd

ping 命令:检测主机连接命令

一种网络检测工具,主要用于检测远程主机是否正常

系统定时任务

crond 服务管理

[root@VM-16-8-centos ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2022-05-21 19:18:04 CST; 1 months 19 days ago
 Main PID: 1023 (crond)
   CGroup: /system.slice/crond.service
           └─1023 /usr/sbin/crond -n

May 21 19:18:04 VM-16-8-centos systemd[1]: Started Command Scheduler.
May 21 19:18:04 VM-16-8-centos crond[1023]: (CRON) INFO (Syslog will be used instead of sendmail.)
May 21 19:18:04 VM-16-8-centos crond[1023]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 58% if used.)
May 21 19:18:04 VM-16-8-centos crond[1023]: (CRON) INFO (running with inotify support)

crontab 命令:定时任务设置

-e:编辑crontab定时任务

-l:查询crontab任务

-r:删除当前用户所有的crontab任务

[root@VM-16-8-centos hsp_linux_tmp]# crontab -e
crontab: installing new crontab
[root@VM-16-8-centos hsp_linux_tmp]# crontab -l
30 21 * * * date >> /root/hsp_linux_tmp/HelloWorld.java
# 第几分钟,第几小时,每月第几天,第几月,每周的第几天,简单命令或者脚本

Linux扩展篇

软件包管理

RPM(RedHat Package Manager),是Linux RedHat系列操作系统的软件包管理工具。

RPM包的名称格式:Apache-1.3.23-11.i386.rpm

显示RPM包的详细信息:rpm -qi python3-3.6.8-18.el7.x86_64

RPM查询命令:

rpm -qa:查询安装的所有rpm软件包

ps:由于软件包较多,一般都会采取过滤,rpm -qa | grep rpm软件包

rpm -qa | grep java 是否已经安装了rpm java包

[root@VM-16-8-centos ~]# rpm -qa | grep mysql
mysql-community-common-8.0.25-1.el7.x86_64
mysql-community-client-8.0.25-1.el7.x86_64
mysql-community-libs-8.0.25-1.el7.x86_64
mysql-community-client-plugins-8.0.25-1.el7.x86_64
mysql-community-server-8.0.25-1.el7.x86_64
[root@VM-16-8-centos ~]# rpm -qi mysql-community-server
Name        : mysql-community-server
Version     : 8.0.25
Release     : 1.el7
Architecture: x86_64
Install Date: Sat 30 Apr 2022 10:35:55 PM CST

RPM卸载命令:

rpm -e rpm软件包:卸载软件包

rpm -e --nodeps rpm软件包:卸载软件时,不检查依赖,那么使用该软件包的软件在此之后就不能正常工作了。

RPM安装命令:

rpm -ivh rpm包全名:这里的rpm包全名是指存在机器上的软件包,而不是远程网络的包全名

YUM:一个在RedHat中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载安装。

YUM类似于Java开发中的Maven工具,可以从镜像网站上下载应用程序。

yum [选项] [参数]

-y:对所有提问都回答"yes"

参数说明:

参数功能
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
deplist显示yum软件包的所有依赖关系

修改网络YUM源:默认的系统YUM源,需要连接国外Apache网站,网速比较慢

[root@VM-16-8-centos ~]# cd /etc/yum.repos.d/
[root@VM-16-8-centos yum.repos.d]# ls
CentOS-Base.repo  CentOS-Epel.repo

默认镜像是腾讯云的。

wget 命令:用于从指定URL下载文件

wget url

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1 Linux系统简介 1.1.1 Linux系统简介-UNIX发展历史和发行版本 1.1.2 Linux系统简介-Linux发展历史和发行版本 1.2 Linux系统简介-开源软件简介 1.3 Linux系统简介-Linux应用领域 1.4 Linux系统简介-Linux学习方法 2 Linux系统安装 2.1 Linux系统安装-VMware虚拟机安装与使用 2.2 Linux系统安装-系统分区 2.3 Linux系统安装-Linux系统安装 2.4 Linux系统安装-远程登录管理工具 3 给Linux初学者的建议 兄弟连新版Linux教程 3.1 给初学者的建议-注意事项 兄弟连新版Linux教程 3.2 给初学者的建议-服务器管理和维护建议 4 Linux常用命令 4.1.1 Linux常用命令-文件处理命令-命令格式与目录处理命令ls 4.1.2 Linux常用命令-文件处理命令-目录处理命令 4.1.3 Linux常用命令-文件处理命令-文件处理命令 4.1.4 Linux常用命令-文件处理命令-链接命令 4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod 4.2.2 Linux常用命令-权限管理命令-其他权限管理命令 4.3.1 Linux常用命令-文件搜索命令-文件搜索命令find 4.3.2 Linux常用命令-文件搜索命令-其他文件搜索命令 4.4 Linux常用命令-文件搜索命令-帮助命令 4.5 Linux常用命令-文件搜索命令-用户管理命令 4.6 Linux常用命令-文件搜索命令-压缩解压命令 4.7 Linux常用命令-网络命令 4.8 Linux常用命令-关机重启命令 5 文本编辑器Vim 5.1 文本编辑器Vim-Vim常用操作 5.2 文本编辑器Vim-Vim使用技巧 6 软件包管理 6.1 软件包管理-简介 6.2.1 软件包管理-rpm命令管理-包命名与依赖性 6.2.2 软件包管理-rpm命令管理-安装升级与卸载 6.2.3 软件包管理-rpm命令管理-查询 6.2.4 软件包管理-rpm命令管理-校验和文件提取 6.3.1 软件包管理-RPM包管理-yum在线管理-IP地址配置和网络yum源 6.3.2 RPM包管理-yum在线管理-yum命令 6.3.3 RPM包管理-yum在线管理-光盘yum源 6.4.1 软件包管理-源码包管理-源码包与RPM包的区别 6.4.2 软件包管理-源码包管理-源码包安装过程 6.5 软件包管理-脚本安装包 7 用户和用户组管理 7.1.1 用户和用户组管理-用户配置文件-用户信息文件 7.1.2 用户和用户组管理-用户配置文件-影子文件 7.1.3 用户和用户组管理-用户配置文件-组信息文件 7.2 用户和用户组管理-用户管理相关文件 7.3.1 用户和用户组管理-用户管理命令-useradd 7.3.2 用户和用户组管理-用户管理命令-passwd 7.3.3 用户和用户组管理-用户管理命令-usermod和chage 7.3.4 用户和用户组管理-用户管理命令-userdel和su 7.4 用户和用户组管理-用户组管理命令 8 权限管理 8.1.1 权限管理-ACL权限-简介与开启 8.1.2 权限管理-ACL权限-查看与设定 8.1.3 权限管理-ACL权限-最大有效权限与删除 8.1.4 权限管理-ACL权限-默认与递归ACL权限 8.2.1 权限管理-文件特殊权限-SetUID 8.2.2 权限管理-文件特殊权限-SetGID 8.2.3 权限管理-文件特殊权限-Sticky BIT 8.3 权限管理-chattr权限 8.4 权限管理-sudo权限 9 文件系统管理 9.1 文件系统管理-回顾分区和文件系统 9.2.1 文件系统管理-文件系统常用命令-df、du、fsck、dumpe2fs 9.2.2 文件系统管理-文件系统常用命令-挂载命令 9.2.3 文件系统管理-文件系统常用命令-挂载光盘与U盘 9.2.4 文件系统管理-文件系统常用命令-支持NTFS文件系统 9.3.1 文件系统管理-fdisk分区-分区过程 9.3.2 文件系统管理-fdisk分区-自动挂载与fstab文件修复 9.4 文件系统管理-分配swap分区 10 Shell基础 10.1 Shell基础-概述 10.2 Shell基础-脚本执行方式 10.3.1 Shell基础-Bash基本功能-历史命令与补全 10.3.2 Shell基础-Bash基本功能-别名与快捷键 10.3.3 Shell基础-Bash基本功能-输入输出重定向 10.3.4 Shell基础-Bash基本功能-多命令顺序执行与管道符 10.3.5.....

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值