Linux(基于 Centos7) 常用操作

1.Linux 简介

Linux 是一种 免费使用、自由传播的类 Unix 操作系统
Linux操作系统内核,由林纳斯·托瓦兹在 1991年10月5日 首次发布
...
Linux 是一套开源操作系统,它有 稳定、消耗资源小、安全性高 等特点
大多数人都是直接使用 Linux 发行版 (就是将 Linux 内核与应用软件做一个打包)
...
目前市面上较知名的发行版有:Ubuntu、RedHat、 CentOS(市场占有率第一) 、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS
...

前端为什么要学习 Linux呢?

  • 随着前后端分离进程的加速,前端程序和后端接口是两套程序,前端自己来部署程序就更加的合适

  • 许多前端基建的工作,需要基于 Linux 环境来实施落地

2.安装 Linux 操作系统

2.1 通过 VMware 虚拟机安装 Linux

2.1.1 安装 VMware

推荐安装 VMware® Workstation 16 Pro

点击下方链接下载 VMware 后,根据安装向导安装即可

https://my.vmware.com/en/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0

2.1.2 安装 Linux

2.1.2.1 下载 Linux 光盘

Centos 官网 下载:https://www.centos.org/download/

Linux(基于 Centos7) 常用操作_第1张图片

或者去 阿里云 下载:http://mirrors.aliyun.com/centos/7/isos/x86_64/

Linux(基于 Centos7) 常用操作_第2张图片

2.1.2.2 在虚拟机中安装 Centos7

https://blog.csdn.net/zhangjianfu2222/article/details/127443309

2.1.2.3 注意事项

  • 安装时需要配置网络

  • 安装时配置的密码,必须记住

  • 鼠标在进入虚拟机出不来时,按住键盘 ctrl+alt

  • 必须安装 VMware tools,可以解决鼠标出不来等很多问题

  • 可以利用 快照、挂起 等操作,迅速恢复系统状态

2.1.3 配置网络

查看 Linux 系统的宿主设备 IP,比如这里的192.168.1.5

Linux(基于 Centos7) 常用操作_第3张图片

在Linux 系统中,通过 ping 测试网络,发现不能跟宿主设备连接,因此需要配置网络

Linux(基于 Centos7) 常用操作_第4张图片

使用 Linux系统自带的 vi 编辑器,打开网路配置文件,按照以下标注进行修改

文件地址: /etc/sysconfig/network-scripts/ifcfg-ens33
Linux(基于 Centos7) 常用操作_第5张图片

修改完成后,重启网络服务

systemctl restart network

再次测试网络连接状态

Linux(基于 Centos7) 常用操作_第6张图片

2.1.4 查看ip、安装 net-tools

查看 ip 有两种方式:

ip addr
ifconfig

注意:如果安装精简版 Linux,则 ifconfig、netstat 等命令可能不存在,需要安装 net-tools

使用下方命令,搜索 ifconfig 包所在的模块,可以看到:打印了 net-tools,这就是 ifconfig 包所在的模块,安装这个模块就能使用 ifconfig 包了

yum search ifconfig

使用下方命令,强制安装 net-tools

yum install -y net-tools

Linux(基于 Centos7) 常用操作_第7张图片

2.2 直接购买服务器

  • 西部数码

  • 阿里云

  • 腾讯云

  • 百度云

3.vi/vim 文本编辑器

3.1 vi/vim 是什么?

vi 是一个文本编辑器,一般 Linux 系统都会内置 vi

vim 是从 vi 发展出来的一个文本编辑器,功能更强大,一般 Linux 系统不会内置 vim,需要单独安装

如果只是常规使用, vi 就足够了

3.2 vi/vim 三种模式

Linux(基于 Centos7) 常用操作_第8张图片

3.2.1 命令模式

启动 vi/vim,便进入了命令模式,该模式下的敲击键盘动作,会被识别为命令,而非输入字符

比如按下 i,并不会输入一个字符,i 被当作了一个命令

  • i —— 切换到输入模式,可以直接编辑文件

  • x —— 删除当前光标所在处的字符

  • : —— 切换到底线命令模式,在最底行输入命令

3.2.2 输入模式

在命令模式中按下 i ,就进入了输入模式,输入模式可以使用以下按键编辑文件:

  • 直接按键输入字符

  • ENTER,回车键,换行

  • BACK SPACE,退格键,删除光标前一个字符

  • DEL,删除键,删除光标后一个字符

  • 方向键,在文本中移动光标

  • HOME/END,移动光标到行首/行尾

  • Page Up/Page Down,上/下翻页

  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  • Esc,退出输入模式,切换到命令模式

文本修改相关命令:

Linux(基于 Centos7) 常用操作_第9张图片

剪切粘贴相关命令:

Linux(基于 Centos7) 常用操作_第10张图片

3.2.3 底线命令模式

在命令模式中按下英文冒号:,就进入了底线命令模式,基本命令有(已经省略了冒号):

  • q 退出程序

  • w 保存文件

一般这俩命令都连起来用,也就是“:wq”,代表执行保存文件并退出

退出相关命令:

Linux(基于 Centos7) 常用操作_第11张图片

3.2 vi/vim 使用示例

vi/vim 使用流程一般为:

  • 在文件所在目录下执行命令 —— vi 文件名称

  • -->按键盘 i 进入输入模式

  • -->编辑内容

  • -->按Esc退出输入模式进入命令模式

  • -->输入:wq 回车退出

Linux(基于 Centos7) 常用操作_第12张图片

以test.text 文件为例~

命令行切换到 test.text 文件所在的目录,执行以下命令

vi test.text

如果执行命令所在的目录下,不存在 test.text 文件,vi 命令会打开一个空白文件等待编辑内容

展示出文本内容后,键盘按下 i ,进入输入模式,输入模式页面下边,会有一个 INSERT 标识

Linux(基于 Centos7) 常用操作_第13张图片

移动光标,编辑文件;编辑完成后,按键盘 Esc 退出输入模式;按:wq,保存并退出

4.远程工具 Xshell

Xshell 可以在 Windows 系统下,访问远端不同系统下的服务器

4.1 安装 Xshell

下载地址:https://xshell.en.softonic.com/download

下载完成后,根据提示安装即可

4.2 创建会话

首次连接服务器,需要新建会话连接,后续再使用时,无需再次新建

左上角文件-新建

Linux(基于 Centos7) 常用操作_第14张图片

按照说明填写信息,点击确定

Linux(基于 Centos7) 常用操作_第15张图片

输入 Linux 的用户名、密码,即可访问 Linux 系统,后面直接双击左侧会话即可远程访问

4.3 shell 常见命令

1、init 0 关机
2、init 6 重启
3、ls 、 ls -l 、 ll 列出出当前目录下的文件
4、cd 切换目录
5、pwd 查看当前完整路径
7、cd - 切换最近使用过的两个目录
8、ctrl+c 中断当前程序
9、ctrl+l / (clear) 清屏
10、ip addr / ifconfig 查看网卡信息
11、ping 127.0.0.1 看网络是否通畅

4.4 shell 命令技巧

4.4.1自动补全命令

命令+(1 次)tab

命令+(2 次)tab

4.4.2 查看历史命令

上下键盘 —— 查看最近的历史命令

history —— 查看命令历史

!22 —— 调用 历史命令中 编号为 22 的命令

!h —— 调用历史中最后一次以 h 开头的命令

4.4.3 获取帮助

ls --help

man ls

5.文件、目录、权限

为了保证安全,Linux 系统对 不同用户 访问 同一文件或目录 的权限,做了不同的规定

5.1 Linux 文件相关命令

5.1.1 创建文件 touch

创建单个文件:

touch file1

批量创建文件:

touch file{1..10}

5.1.2 删除文件 rm -rf

-r:递归的删除目录下面文件以及子目录下文件

-f:强制删除,忽略不存在的文件,从不给出提示

删除单个文件:

rm -rf file11

批量删除文件:

rm -rf file{1..10}

5.1.3 复制、移动文件/重命名文件 cp mv

复制文件:

cp file2 file22

移动文件/重命名文件(本质上就是移动文件):

mv file1 file11

5.1.4 查看、筛选文件内容 cat

查看文件全部内容:

cat file1

查看文件前三行(| 把前面的执行结构给后面)

cat file1 | head -3

查看文件后三行(| 把前面的执行结构给后面)

cat file1 | tail -3

查找(过滤)文件中的某个字符:

cat httpd.conf | grep listen

查找(过滤)文件中的某个字符(忽略大小写)

cat httpd.conf | grep -ignore listen
cat httpd.conf | grep -i listen

5.1.5 编辑文件 vi

进入编辑模式:

vi file1

使用 vi 搜索文件内容

vi 命令进入 file1 文件后,输入 /Listen,按 N搜索下一个 Listen 单词

5.1.6 查找文件 find

5.1.6.1 find(内置)

find 目录 -name 文件名

举个例子:查找根目录下名为 httpd.conf 的文件

find / -name httpd.conf

5.1.6.2 updatedb(需单独安装)

相较于 find,updatedb 的查找速度更快,需单独安装

安装命令:

yum install mlocate -y

查找示例:

建立一个小型数据库:updatedb
在数据库里面搜索:locate httpd.conf

5.2 Linux 目录

5.2.1 Linux 目录功能介绍

在 Linux 系统根目录下,执行 ls,查看根目录下所有文件/目录

*root 目录:Linxu 超级权限 root 的主目录

*home 目录:系统默认的用户主目录,如果添加用户时 不指定 用户主目录,则默认在/home

下创建与用户同名的文件夹

*usr 目录:应用程序存放目录,安装 Linux 软件包时,默认安装到/usr/local 目录下

*etc 目录:存放系统的配置文件,如 /etc/fstal 存放系统分析信息

*bin 目录:存放系统所需要的重要命令,比如文件或目录操作的命令 ls、cp、mkdir 等,另外

/usr/bin 也放了一些系统命令

*sbin 目录:存放只有 root 超级管理员才能执行的程序

media 目录:即插即用型设备挂载点,光盘默认挂载点,通常光盘挂载于/mnt/cdrom 下

mnt 目录: 临时文件挂载目录(测试目录)

opt 目录: 第三方软件存放目录(测试目录)

tmp 目录:临时文件夹(测试目录)

boot 目录:存放 Linux 启动时内核及引导系统程序所需要的核心文件,内核文件和 grub

系统引导管理器都位于此目录

dev 目录:存放这 Linux 系统下的设备文件,如光驱等

var 目录:目录经常变动,/var/log 存放系统日志、系统库文件

5.2.2 Linux 目录相关命令

5.2.2.1 创建目录 mkdir

创建多个同级目录:

mkdir dir1 dir2 dir3

递归创建树目录:

mkdir -p a/b/c/d/e/f/g

5.2.2.2 删除目录 rm -rf

-r:递归的删除目录下面文件以及子目录下文件。

-f:强制删除,忽略不存在的文件,从不给出提示

删除 dir1、dir2 目录

rm -rf dir1 dir2

删除以 dir 开头的所有文件:

rm -rf dir*

5.2.2.3 复制目录、移动目录/重命名目录 cp、mv

复制目录及目录下的文件(注意别忘记递归复制,否则只会复制空文件夹)

cp -rf wwwroot/ mywwwroot/

移动目录/重命名目录(本质上就是移动目录):

mv dir1 dir11

5.2.2.4 查看目录 ls tree

普通方法查看目录

ls

递归查看目录树

tree a

tree 命令需要单独安装

yum install tree -y

5.3 Linux 权限

5.3.1 权限分类、用户分类

权限分类【用户对文件所拥有的权限】

  • r读

  • w写

  • x执行

用户分类【u+g+o=a(表示所有人)】

  • 所有者 user u

  • 所属组 group g

  • 其他用户 other o

  • 所有用户 all a

5.3.2 文件/目录中的权限

5.3.2.1 文件的 rwx

  • r 查看文件内容

  • w 在文件里写内容

  • x 执行该文件(文件不是普通文件,是程序或脚本)

5.3.2.2 目录的 rwx

  • r 查看目录里面的文件(4)

  • w 在目录里创建或删除文件(2)

  • x 切换进目录(1)

5.3.2.3 查看并分析文件信息

显示一个文件的属性、文件所属的用户/组

ls -l
Linux(基于 Centos7) 常用操作_第16张图片

-rw-r--r--. 1 root root 60 5月 16 17:54 test.txt

  1. 红色这部分代表 类型,可以是‘-’、‘d’、‘l’、b’、‘c’、‘s’、‘p’

‘-’ :普通文件(没有系统功能的文件/命令)
‘d’ :目录
‘l’ :链接文档 ( link file )(相当于快捷方式)
‘b’ :装置文件里面的可供储存的接口设备(一般情况系统用于管理存储文件的类型)
‘c’ :装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )
  1. 黄色这部分代表 用户权限,三个为一组,且均为『rwx-』 的三个参数的组合

第一组表示所有者(user)的权限
第二组表示所属组(group)的权限
第三组表示其他人(other)的权限

[ r ] 代表可读(read)
[ w ] 代表可写(write)
[ x ] 代表可执行(execute)

三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]

Linux(基于 Centos7) 常用操作_第17张图片
  1. 蓝色这部分代表 文件加载了安全上下文,安全上下文的启动程序是由SELlinux开启,加载过安全上下文的文件,就会出现第三位的点,否则没有该点

  1. 粉色这部分代表 文件拥有者

  1. 绿色这部分代表 文件拥有组

5.3.2.4 举个例子

举个例子~~分析下方数据中的信息

drwxr-x---. 2 root root 6 4 月 11 2018 mnt
  • d —— 表示目录

  • rwx —— root 对 mnt 目录具有读、写和执行的权限

  • r-x —— root 组内其他用户对 mnt 目录具有读和执行权限

  • --- —— other 其他所有用户对 mnt 目录没有任何权限

  • . —— 表示 ACL 的属性

  • 2 —— mnt 里面的目录数量

  • root —— 当前目录所属用户

  • root —— 当前目录所属组

  • 6 —— 文件大小(以字节为单位),如果是一个文件夹,则表示该文件夹的大小(注意是文件夹本身的大小,而不是文件夹及其内部的文件的总大小)

  • 人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了.

  • 4 月11 2018 —— 文件创建时间

  • mnt —— 目录名称

5.3.2.5 更改文件属主、更改文件属组(不常用)

更改文件属组(group)

chgrp [-R] 属组名 文件名

更改文件属主(user)

chown [–R] 属主名 文件名

同时更改文件属主、属组:

chown [-R] 属主名:属组名 文件名

-R:递归更改文件属组

在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改

5.3.3 权限的数字表示法

Linux 文件权限有两种设置方法

  • 一种是数字 421(4r,2w,1x)

  • 一种是符号 rwx(r4,w2,x1)

user/group/others 三种用户,都有 read/write/execute 权限,且可以累加

举个例子~~当权限为:[-rwxrwxr--],这表示:

  • user = rwx = 4+2+1 = 7

  • group = rwx = 4+2+1 = 7

  • others= r-- = 4+0+0 = 4

再举个例子~~ 755 表示-rwxr-xr-x

  • chmod 755 file.txt

  • 当前用户对 file.txt 具有读/写/执行的权力

  • 当前用户组对 file.txt 具有读/写/执行的权力

  • 其他用户对 file.txt 具有读/写/执行的权力

5.3.4 chmod 权限分配(针对群体用户,批量设置权限)

  • +增加权限

  • -删除权限

5.3.4.1 增加权限

当前用户 分配执行 my.sh 的权限

chmod u+x my.sh

其他用户 分配对 file.txt 的读写权限

chmod o+r,o+w file.txt

其他用户 分配对 mnt 目录的读取、写入、执行(进入)权限

其他用户 分配对 mnt 目录及 mnt目录下所有文件的读取、写入、执行(进入)权限

chmod o+r,o+w,o+x mnt
chmod -R o+r,o+w,o+x mnt

修改 所有用户 对指定目录下文件 的权限为可读、可修改、可执行

chmod -R 777 wwwroot/

5.3.4.2 删除权限

其他用户 对 mnt 目录没有任何权限

chmod o-r,o-w,o-x mnt

所有用户 对 test.sh 文件具有 x 的权限

所有用户 对 test.sh 都没有 x 权限

chmod a+x test.sh
chmod a-x test.sh

5.3.5 用户权限管理 ACL(针对单独用户,设置单独权限)

5.3.5.1 查看 opt 拥有的 ACL 权限

getfacl opt

5.3.5.2 设置 opt 的 ACL 权限

让 zhangsan 对 opt 目录具有 rx 权限(-m 表示修改权限)

setfacl -m u:zhangsan:rx opt/

让 lisi 对 opt 目录具有 rwx 的权限(-m 表示修改权限)

setfacl -m u:lisi:rwx opt/

5.3.5.3 删除 opt 的 user1 拥有的 ACL 权限

让 zhangsan 失去对 opt 目录的权限(-x 表示删除权限)

setfacl -x u:zhangsan opt

5.3.5.4 删除 opt 上设置过的所有 ACL 权限

setfacl -b opt/

5.3.6 用户权限管理 visudo

5.3.6.1 获取命令的bin文件(可执行文件)

每个命令对应着一个可执行文件

查找 userdel 命令的 bin 文件

which userdel

5.3.6.2 root 超级管理员配置提权

前面说过,sbin 目录下存放的是 root 用户才能执行的命令

但是有时候其他用户(比如 zhangsan)也可能需要执行 sbin 目录下的命令

此时就需要超级管理员给其他用户设置一下,让其他用户可以通过提权的方式,使用 sbin 目录下的命令

具体步骤:

  • 命令行输入 —— visudo

  • 允许zhangsan使用 useradd 命令 —— %zhangsan localhost=/usr/sbin/useradd

  • 允许lisi使用 userdel 命令 —— %lisi localhost=/usr/sbin/userdel

5.3.6.3 普通用户使用 sudo 调用 sbin 中的命令

sudo useradd wangwu
sudo userdel wangwu

5.3.7 用户增删改查

Linux 同时可以支持多个用户,每个用户对自己的文件设备有特殊权限,保证用户之间互不干扰;

当硬件配置非常高时,每个用户还可以同时执行多个任务,多个线程同时工作,提高效率

多用户是 Linux 优于其他操作系统的一大特点

5.3.7.1 添加用户

useradd lisi

5.3.7.2 设置密码

passwd lisi

5.3.7.3 删除用户

userdel -r lisi

注意:

  • -r:递归的删除目录下面文件以及子目录下文件

  • 删除用户的时候,用户组被删除

5.3.7.4 查看用户

who 命令:显示当前正在系统中的所有用户名字、使用终端设备号、注册时间

whoami 命令:显示出当前终端上使用的用户

last 命令:last 作用是显示近期用户或终端的登录情况

5.3.7.5 用户加入组/移出组

把用户 testuser 加入到 root 组,加入组后,testuser 获取到 user 组及 root 组所有权限

gpasswd -a testuser root

移出组

gpasswd -d testuser root

6.Linux安装软件

推荐安装方式:yum > rpm > 二进制解压 > 源代码编译

6.1 rpm 方式安装

RPM 全称为 Redhat Package Manager ,是由 Redhat 公司提出的,用于管理 Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过 RPM 完成安装

6.1.1 本示例基于 httpd 来演示

6.1.1.1 挂载光盘

  • 必须把把光盘放在光驱中

  • 光驱必须放连上电脑

  • mount dev/cdrom /media 挂载

  • df 查看光盘是否挂载

  • 查找 ls | grep httpd

6.1.1.2 安装

rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpm
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -i 需要安装的包文件名
rpm -iv 安装过程中显示正在安装的文件信息;
rpm -ivh 安装过程中显示正在安装的文件信息及安装进度;

6.1.1.3 卸载、升级

httpd 表示要卸载的软件包
rpm -e httpd

查找 httpd
rpm -q httpd

升级 httpd
rpm -Uvh httpd

6.1.2 本示例基于Java8 来演示

6.1.2.1 下载 jdk

下载对应版本 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

Linux(基于 Centos7) 常用操作_第18张图片

6.1.2.2 上传并安装 jdk

使用Xftp 将刚下载的 jdk-8u291-linux-x64.rpm 文件进行上传到服务器

检查是否安装OpenJDK,如果有则卸载

执行命令 java -version 出现以下内容,表示系统已经安装 OpenJDK

执行 rpm-qa | grep java 查看系统自带的 Java 相关文件

Linux(基于 Centos7) 常用操作_第19张图片

将 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 所有文件全部删除

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64

验证是否全删除:执行命令 rpm-qa | grep java 无任何文件,表示删除成功

在上一步上传文件所在目录,执行命令安装 jdk

rpm -ivh jdk-8u291-linux-x64.rpm
Linux(基于 Centos7) 常用操作_第20张图片

验证是否安装成功

Linux(基于 Centos7) 常用操作_第21张图片

6.2 yum 方式安装

Yum全称为 Yellow dog Updater, Modified,是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell

前端软件包管理器。主要功能是更方便的添加/删除/更新 RPM 包,自动解决包的依赖性问题

6.2.1 yum 基本操作

6.2.1.1 yum 安装 rpm 包

yum install -y net-tools —— 包括 netstat ifconfig 等命令
yum install -y unzip zip —— zip 压缩减压
yum install -y mlocate —— updatedb
yum install -y wget —— 直接从网址下载文件
yum -y install psmisc —— ① 查看进程pstree | grep httpd ② 显示进程以及子进程 pstree -p

6.2.1.2 yum 卸载 rpm 包

yum -y remove wget

6.2.1.3 yum 搜索 rpm 包

yum search xxx

6.2.1.4 yum 查看 rpm 包

yum list
yum list | grep httpd
yum list updates —— 列出所有可更新的软件包
yum list installed —— 列出所有已安装的软件包

6.2.1.5 yum 显示 rpm 包信息

yum info package1

举个例子~~

yum info httpd

6.2.2 yum 仓库配置

yum 的主配置文件 —— etc/yum.conf

yum 的仓库配置文件 —— /etc/yum.repo.d/*.repo,这里可以配置一个或多个 repository

yum 仓库就是使用 yum 命令下载软件的镜像地址

我们通常使用 yum install 命令来在线安装 Linux 系统的软件,这种方式可以自动处理依赖性关系,并且一次安装所有依赖的软体包

但是经常会遇到从国外镜像下载速度慢,无法下载的情况,此时就需要把 yum 源改为国内的镜像

6.2.3本示例基于 nginx 来演示

直接执行 yum install nginx 发现提示没有可用 nginx 包,这是因为本地没有 nginx 存储库的源

Linux(基于 Centos7) 常用操作_第22张图片

6.2.3.1 安装 yum-utils

安装 yum-utils , 安装过的可以不必重复安装

sudo yum install yum-utils

6.2.3.2 设置 yum 存储库,安装 nginx 源

创建 /etc/yum.repos.d/nginx.repo 文件,并写入以下内容:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

也可以直接安装 nginx 源

sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

查看 nginx 源是否配置成功:

  • yum search nginx,若搜索到信息,则添加成功

  • npm info nginx,若获取到信息,则添加成功

6.2.3.3 安装 nginx 并验证

sudo yum install -y nginx

注意:

  • 通过 yum 安装的 nginx,配置文件在/etc/nginx 目录下(修改端口、配置代理之类的都在这里)

  • 通过 yum 安装的 nginx,安装完后无需配置环境变量,可以直接使用nginx 相关命令

验证是否安装成功:

Linux(基于 Centos7) 常用操作_第23张图片

6.2.3.4 启动 nginx 并设置开机运行

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

启动成功后,如果还是访问不到,可以考虑防火墙是否关闭

http://bbs.itying.com/topic/5bd5d4460e525017c449479a

6.3 二进制解压安装

本示例基于 Node.js 来演示

6.3.1 下载

打开 https://nodejs.org/en/ 官网,按照图示进行下载,会得到一个压缩包

Linux(基于 Centos7) 常用操作_第24张图片

6.3.2 上传文件并解压

使用 Xftp 将刚下载的 Node.js 压缩包上传到服务器,比如这个目录 /home/node

解压压缩包

tar -xvf node-v14.17.0-linux-x64.tar.xz

将解压出来的文件重命名(也可以使用 Xftp 工具直接重命名)

mv node-v14.17.0-linux-x64 nodejs

6.3.3 配置环境变量

在刚解压的 node 目录的 bin 目录下,执行 pwd 命令获取路径(/home/node/nodejs/bin)

使用 vi 编辑 profile 文件

vi /etc/profile

添加环境变量

export NODE_HOME=/home/node/nodejs/bin
export PATH=$NODE_HOME:$PATH

:qw保存,执行下方命令,使环境变量生效

source /etc/profile

验证配置是否生效

node -v
npm -v

6.4 源代码安装

此种方式不推荐,因为比较麻烦

6.4.1 安装 Linux 中源代码编译软件

yum install -y gcc make gcc-c++ openssl-deve

检查是否安装成功

rpm -qa | grep gcc
rpm -ql gcc

6.4.2 编译安装 Linux 源代码

基本步骤:

  • 生成编译配置文件 - Makefile

  • 开始编译 - make(或者 make -j4)

  • 开始安装 - make install

举个例子~~

  1. 下载httpd-2.2.9.tar.gz 源代码

  1. 解压并 cd 到对应目录

  1. 生成编译配置文件,输入命令(注意路径调整) —— ./configure --prefix=/usr/local/apache

  1. 开始编译,输入命令 —— make 或者 make -j4,后者速度更快

  1. 开始安装,输入命令 —— make install

如果使用源代码安装 httpd,则上面第三步的命令应该是:

./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ --with-included-apr --enable-dav
--enable-so --enable-deflate=shared --enable-expires=shared
--enable-rewrite=shared

6.4.3 卸载源代码安装的软件

分为两步:结束当前进程、删除源代码

结束进程

pstree | grep httpd
pkill httpd

删除源代码

cd /usr/local/
rm -rf apache/ 直接删除源代码

7.防火墙相关操作

Centos7 默认使用 firewalld,该防火墙默认是启动状态

开启防火墙之后,有些服务就会访问不到,因为服务相关端口被防火墙控制,没有打开

7.1 Nginx 启动后访问不到

nginx 默认使用80端口,安装完成后启动,会发现使用IP直接访问不到,这时,就需要开放80端口

Linux(基于 Centos7) 常用操作_第25张图片

查看 80 端口是否开启:firewall-cmd --query-port=80/tcp

发现未开启,开启 80 端口:firewall-cmd --permanent --add-port=80/tcp

重启服务:service firewalld restart

重新访问

Linux(基于 Centos7) 常用操作_第26张图片

7.2 使用 nginx 部署程序简单示例

修改 /etc/nginx/conf.d 文件,设置端口及部署文件的目录

Linux(基于 Centos7) 常用操作_第27张图片

重新加载配置文件

nginx -s reload

执行命令后,页面依然无法访问,这是因为 防火墙 未开放 对应端口

输入命令开启 8888端口,并重新加载防火墙配置

firewall-cmd --permanent --add-port=8888/tcp
service firewalld restart

在服务器路径下新建要部署的项目文件夹(本示例为 pinxx)

Linux(基于 Centos7) 常用操作_第28张图片

本地打包生成静态资源上传服务器

Linux(基于 Centos7) 常用操作_第29张图片

浏览器输入地址,测试验证

Linux(基于 Centos7) 常用操作_第30张图片

7.3 防火墙常用命令

启动:systemctl start firewalld

关闭:systemctl stop firewalld

重启:service firewalld restart

查看 firewall 服务状态: systemctl status firewalld

查看 firewall 的状态:firewall-cmd --state

开机禁用 : systemctl disable firewalld

开机启用 : systemctl enable firewalld

查看防火墙规则:firewall-cmd --list-all

更新防火墙规则: firewall-cmd --reload 修改 firewall-cmd 配置后必须重启

查看所有打开的端口: firewall-cmd --zone=public --list-ports

查询端口是否开放(示例:8080端口):firewall-cmd --query-port=8080/tcp --permanent (–permanent 永久生效,没有此参数重启后失效)

开放指定端口(示例:8080端口):firewall-cmd --permanent --add-port=8080/tcp

关闭指定端口(示例:8080端口):firewall-cmd --permanent --remove-port=8080/tcp

7.4 关闭 SELinux 防火墙

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

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

SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大;很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了,阿里云、西部数码云服务器 安装的 Centos 默认已经关闭 SELinux了

查看 SELinux 状态(下面两个命令都行)

/usr/sbin/sestatus -v
getenforce

SELinux status: enabled

如果 SELinux status 参数为 enabled,则为开启状态

关闭 SELinux:

setenforce 0 —— 设置 SELinux 成为 permissive 模式

setenforce 1 —— 设置 SELinux 成为 enforcing 模式

修改/etc/selinux/config 文件 —— 将 SELINUX=enforcing 改为 SELINUX=disabled

8.内存、cpu、进程、端口、硬盘管理

8.1 top 命令 / uptime 命令

Linux(基于 Centos7) 常用操作_第31张图片

8.1.1 top 命令第一行 uptime

top - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05

依次对应:

  • 15:31:47 —— 系统当前时间

  • 9:30 —— 系统到目前为止运行的时间

  • 3 users —— 当前登陆系统的用户数量

  • load average 后面的三个数字 —— 距离现在一分钟,五分钟,十五分钟的负载情况

第一行信息,相当于输入命令 uptime

8.1.2 top 命令第二行 Tasks

Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie

依次对应:

  • tasks —— 表示任务(进程)

  • 133 total —— 表示现在有 133 个进程,其中运行中的进程数为1 ,休眠(挂起)进程数为132 ,停止的进程数为 0,僵尸进程数为 0

8.1.3 top 命令第三行 cpu

%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st

依次对应:

  • us —— user 用户空间占用 cpu 的百分比

  • sy —— system 内核空间占用 cpu 的百分比

  • ni —— niced 改变过优先级的进程占用 cpu 的百分比

  • 空闲 cpu 百分比(一般只需要关注这里)

  • wa —— IO wait IO 等待占用 cpu 的百分比

  • hi —— Hardware IRQ 硬中断 占用 cpu 的百分比

  • si —— software 软中断 占用 cpu 的百分比

  • st —— 被 hypervisor 偷去的时间

单独查看cpu,还可以使用下方命令:

cat /proc/cpuinfo | grep name

Linux(基于 Centos7) 常用操作_第32张图片

8.1.4 top 命令第四行 Mem

KiB Mem : 2897496 total, 1995628 free, 191852 used, 710016 buff/cache

依次对应:

  • 总内存:2.76g

  • 空闲内存:1995628/1024/1024=1.9g

  • 已使用内存:0.18g

  • 缓存区内存:0.67g,缓冲区是从主内存中特地预留出的内存,用来存放特定的一些信息,例如从磁盘获取的文件表,程序正在读取的内容等等

单独查看内存,还可以使用下方命令:

cat /proc/meminfo | grep Mem

8.1.5 top 命令第七行 进程监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

依次对应:

PID — 进程 id

USER — 进程所有者

PR — 进程优先级

NI — nice 值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA

SHR — 共享内存大小,单位 kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的 CPU 时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的 CPU 时间总计,单位 1/100 秒

COMMAND — 进程名称(命令名/命令行)

8.2 进程管理

8.2.1 查看进程

pstree 查看进程树
pstree -ap 显示所有信息

pstree | grep httpd
pstree -ap | grep httpd

ps -au
ps -au | grep httpd
ps -aux

ps 中 aux 的含义:

  • 显示现行终端机下的所有程序,包括其他用户的程序(a)

  • 以用户为主的格式来显示程序状况 (x)

  • 显示所有程序,不以终端机来区分(u)

8.2.2 杀死进程

pkill 进程名字

pkill httpd

kill 进程号

kill 2245

kill -9 进程号 强制杀死

kill -9 1234

kill:执行 kill 命令,系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该 signal 信号后,将会发生以下事情:

  • 程序立刻停止

  • 当程序释放相应资源后再停止

  • 程序可能仍然继续运行

  • 大部分程序接收到 SIGTERM 信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待 IO,可能就不会立马做出响应,我在使用 wkhtmltopdf 转 pdf 的项目中遇到这现象),也就是说,SIGTERM 多半是会被阻塞的

kill -9:执行 kill -9 命令,系统给对应程序发送的信号是 SIGKILL,即 exit,exit 信号不会被系统阻塞,所以 kill -9能顺利杀掉进程

8.3 查看端口

netstat -tunpl |grep httpd

-t 或--tcp 显示 TCP 传输协议的连线状况

-u 或--udp 显示 UDP 传输协议的连线状况

-n 或--numeric 直接使用 IP 地址,而不通过域名服务器

-p 或--programs 显示正在使用 Socket 的程序识别码和程序名称

-l 或--listening 显示监控中的服务器的 Socket

关闭防火墙:

Firewalld 关闭:systemctl stop firewalld
SELinux 关闭:setenforce 0

http://bbs.itying.com/topic/5bd5d4460e525017c449479a

http://bbs.itying.com/topic/5bd7cb31dee9090efc61eccf

8.4 查看硬盘信息

列出文件系统的整体磁盘空间使用情况

df

以易读的方式显示,总共多少 g 用了多少 g

df -h

查看该文件夹所在磁盘的使用情况

df /home
Linux(基于 Centos7) 常用操作_第33张图片

8.5 查看目录及文件大小

8.5.1 查看当前目录大小

du -sh [目录名]

不写目录名时为当前目录

8.5.2 查看指定文件夹下的所有文件大小(包含子文件夹)

du -h [目录名]

不写目录名时为当前目录

Linux(基于 Centos7) 常用操作_第34张图片

8.6 查看系统内核版本

cat /proc/version

9.使用 systemctl 管理服务

9.1 什么是 systemclt

systemctl是系统服务管理器命令,定时执行某项操作

systemctl 是 service 和 chkconfig 这两个命令的整合,在 CentOS 7 就开始被使用了

Linux(基于 Centos7) 常用操作_第35张图片

9.2 systemclt 管理服务常用命令

启动服务:systemctl start httpd

关闭服务:systemctl stop httpd

重启服务:systemctl restart httpd

查看一个服务的状态:systemctl status httpd

查看一个服务是否在运行:systemctl is-active httpd

查看当前已经运行的服务:systemctl list-units -t service

列出所有服务(注意顺序): systemctl list-units -at service

列出所有自启动服务:

  • systemctl list-unit-files|grep enabled

  • systemctl list-unit-files|grep disabled

  • systemctl list-unit-files|grep disabled | grep httpd

设置开机自启动: systemctl enable httpd

停止开机自启动: systemctl disable httpd

使指定服务重新加载配置:systemctl reload httpd

9.3 定时执行某项操作

要实现定时执行某项操作,就需要使用 Linux 的系统定时任务服务,该服务会自动启动 crond 进程

crond 进程会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务

9.3.1 实现原理

打开 /etc/crontab文件,可以看到以下内容:

Linux(基于 Centos7) 常用操作_第36张图片

增加定时任务

格式: * * * * * user-name command(也可以是Shell 脚本)

Linux(基于 Centos7) 常用操作_第37张图片

特殊符号

*(星号)

代表任何时间。比如第一个 "*" 就代表每分钟都执行一次

,(逗号)

代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分执行一次命令

-(中杠)

代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0分执行命令。

/(正斜线)

代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。

重启服务

systemctl restart crond.service

9.3.2 实现 GitLab 凌晨2点定时备份

打开 /etc/crontab文件添加以下内容

00 02 * * * root sh /srv/gitlab/config/gitlab_backup.sh

在该目录(/srv/gitlab/config)下,创建备份脚本 gitlab_backup.sh ,内容如下:

#! /bin/bash
docker exec -t gitlab2021 gitlab-backup create SKIP=artifacts

虽然可以将命令直接写在 crontab文件中,但是更推荐写在 sh 文件中,这样方便后期修改以及备份迁移

重启服务

systemctl restart crond.service

9.3.3 定时相关命令

9.3.3.1 启动定时任务

# centos7 及以上

systemctl start crond.service

# 其他Linux

service crond start

9.3.3.2 查看服务启动状态

# centos7 及以上

systemctl status crond.service

# 其他Linux

service crond status

9.3.3.3 停止服务状态

# centos7 及以上

systemctl stop crond.service

# 其他Linux

service crond stop

9.3.3.4 重新启动服务

# centos7 及以上

systemctl restart crond.service

# 其他Linux

service crond restart

9.3.3.5 重新加载

# centos7 及以上

systemctl reload crond.service

# 其他Linux

service crond reload

10.系统开关机

10.1 重启

立即重启方式1

reboot

立即重启方式2

shutdown -r now

10 分钟后重启

shutdown -r +10

10.2 关机

立即关机

shutdown -h now

10 分钟后关机

shutdown -h 10

你可能感兴趣的:(Linux,Linux)