Linux(基于 Centos7) 常用操作

news2024/10/5 23:29:03

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/

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

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 系统中,通过 ping 测试网络,发现不能跟宿主设备连接,因此需要配置网络

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

文件地址: /etc/sysconfig/network-scripts/ifcfg-ens33

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

systemctl restart network

再次测试网络连接状态

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

2.2 直接购买服务器

  • 西部数码

  • 阿里云

  • 腾讯云

  • 百度云

3.vi/vim 文本编辑器

3.1 vi/vim 是什么?

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

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

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

3.2 vi/vim 三种模式

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,退出输入模式,切换到命令模式

文本修改相关命令:

剪切粘贴相关命令:

3.2.3 底线命令模式

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

  • q 退出程序

  • w 保存文件

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

退出相关命令:

3.2 vi/vim 使用示例

vi/vim 使用流程一般为:

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

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

  • -->编辑内容

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

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

以test.text 文件为例~

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

vi test.text

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

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

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

4.远程工具 Xshell

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

4.1 安装 Xshell

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

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

4.2 创建会话

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

左上角文件-新建

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

输入 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

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

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

  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

6.1.2.2 上传并安装 jdk

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

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

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

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

将 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

验证是否安装成功

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 存储库的源

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 相关命令

验证是否安装成功:

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/ 官网,按照图示进行下载,会得到一个压缩包

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端口

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

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

重启服务:service firewalld restart

重新访问

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

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

重新加载配置文件

nginx -s reload

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

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

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

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

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

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

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 命令

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

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

8.5 查看目录及文件大小

8.5.1 查看当前目录大小

du -sh [目录名]

不写目录名时为当前目录

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

du -h [目录名]

不写目录名时为当前目录

8.6 查看系统内核版本

cat /proc/version

9.使用 systemctl 管理服务

9.1 什么是 systemclt

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

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

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文件,可以看到以下内容:

增加定时任务

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

特殊符号

*(星号)

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

,(逗号)

代表不连续的时间。比如"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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文讲明白一致性hash算法

一致性Hash算法常用来解决数据分片时的数据扩容/缩容的性能问题。 一、业内数据分片用的Hash算法,将节点的hash值对节点数取余。 存取通过key / value的方式对节点取余。 二、数据分片使用hash算法的优缺点: 优点:简单,方便。 缺…

【笔记】OpenMPI基本使用1

【笔记】OpenMPI基本使用1 介绍 在 90 年代之前,对不同的计算架构写并发程序是一件困难而且复杂的事情。当时,虽然很多软件库可以帮助写并发程序,但是并没有一个大家都接受的标准。 在当时,大多数的并发程序出现在科学研究领域…

为什么我复制的中文url粘贴出来会是乱码的? 浏览器url编码和解码

为什么我复制的中文url粘贴出来会是乱码的? 浏览器url编码和解码 Start 番茄最近涉及到一些和单点登录相关的业务需求,在实现功能的过程中,难免少不了和 url 打交道。但是在打交道的过程中,遇到一个痛点:明明我复制的…

网络基础(二)之HTTP与HTTPS

应用层 再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢? 为什么要转换呢? 如果我们将struct message里面的信息…

【C++】-- 类型转换

目录 前言 C语言中的类型转换 C强制类型转换 static_cast(static静止的) reinterpret_cast(reinterpret重新解释) const_cast(const常量) 总结 dynamic_cast(dynamic动态) …

JavaWeb开发(三)3.5——Java的反射机制

一、反射机制的概念 指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法。这种动态获取信息,及动态调用对象方法的功能叫java语言的反射机制。 Java反射机制的核心是在程序运行时动…

Vue3电商项目实战-购物车模块4【11-购物车页面-确认框组件】

文章目录11-购物车页面-确认框组件11-购物车页面-确认框组件 目的:通过vue实例调用$confirm函数弹出确认框。import导入函数使用也需要支持。 大致步骤: 实现组件基础结构和样式。实现函数式调用组件方式和完成交互。加上打开时动画效果。给购物车删除加…

飞鹤奶粉营销杀手级动作,让对手郁闷

飞鹤奶粉杀手级动作,让对手绝望 不是“更适合中国宝宝体质”一句话的事 而是杀手级资源匹配: 飞鹤奶粉一年50万场线下活动 趣讲大白话:让别人无路可走 【安志强趣讲信息科技94期】 ********************************** 战略定位后&#xff0…

多重背包问题中的二进制状态压缩

1.多重背包问题 经典的多重背包问题和01背包问题的相似之处在于二者的一维遍历顺序都是从右侧往左侧遍历。 同时多重背包的一维写法不比二维写法降低时间复杂度。 2.多重背包标准写法:(平铺展开形式) class Solution {public int maxValue(int N, int C, int[] s…

Raspbian镜像无头烧录

Raspbian镜像无头烧录1. 源由2. 需求3. 分析4. 步骤4.1 删除tf卡分区内容4.2 balena烧录镜像4.3 配置USB直接登录4.4 配置WiFi 2.4G网络登录4.5 修改登录账号密码4.6 数据同步和弹出tf卡5. 登录5.1 登录异常处理5.2 WiFi 2.4G网络登录5.3 USB直接登录6. 参考资料7. 补充资料这里…

HCIP-5OSPF域内域间外部路由学习笔记

1、OSPF区域 每个区域都维护一个独立的LSDB。 Area 0是骨干区域,其他区域都必须与此区域相连。 划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。 区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不…

【Flutter·学习实践·UI篇】基础且重要的UI知识

前言 参考学习官网:《Flutter实战第二版》 学习前先记住:Flutter 中万物皆为Widget,心中默念3次以上铭记于心。 这一点和开发语言Dart的变量一切皆是对象的概念,相互对应。 Widget 在前面的介绍中,我们知道在Flutt…

CSAPP第八章 异常控制流

目录 异常 异常处理 异常的类别 中断 陷阱和系统调用 故障 终止 ​编辑 Linux/x86-64 系统中的异常 进程 ​编辑 逻辑控制流 并发流 私有地址空间 用户模式和内核模式 上下文切换 ​编辑系统调用错误处理 进程控制 获取进程ID 创建和终止进程 回收子进程 …

汇编系列03-不借助操作系统输出Hello World

每天进步一点点,加油! 上一节,我们通过汇编指令,借助操作系统的系统调用实现了向标准输出打印Hello world。这一节我们打算绕过操作系统,直接在显示屏幕上打印Hello world。 计算机的启动过程 当我们给计算机加电启…

AcWing1049.大盗阿福题解

前言如果想看状态机的详解,点机这里:dp模型——状态机模型C详解1049. 大盗阿福阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有 N家店铺,每家店中都有一些现金。阿福事先调查得知,只有当…

《算法分析与设计》笔记总结

《算法分析与设计》笔记总结第一章 算法引论1.1 算法与程序1.2 表达算法的抽象机制1.3 描述算法1.4 算法复杂性分析第二章 递归与分治策略2.1 递归的概念2.2 分治法的基本思想2.3 二分搜索技术2.4 大整数乘法2.5 Strassen矩阵乘法2.7 合并排序2.8 快速排序2.9 线性时间选择2.10…

深度学习算法训练和部署流程介绍--让初学者一篇文章彻底理解算法训练和部署流程

目录 1 什么是深度学习算法 2 算法训练 2.1 训练的原理 2.2 名词解释 3 算法C部署 3.1 嵌入式终端板子部署 3.3.1 tpu npu推理 3.3.2 cpu推理 3.2 服务器部署 3.2.1 智能推理 3.2.2 CPU推理 1 什么是深度学习算法 这里不去写复杂的概念,就用通俗的话说…

无头盔PICO-unity开发日记1(抓取、传送)

目录 可传送的地面 锚点传送 修改射线颜色(可交互/不可交互) 球、抓手组件 ||刚体(重力)组件 可传送的地面 1.地面添加组件 2.XR交互管理器添加传送提供者 3.地面设置传送提供者 4.XR交互管理器添加locomotion system 5.拖拽 完…

2020蓝桥杯真题日期格式 C语言/C++

问题描述 小蓝要处理非常多的数据, 其中有一些数据是日期。 在小蓝处理的日期中有两种常用的形式: 英文形式和数字形式。 英文形式采用每个月的英文的前三个宁母作为月份标识, 后面跟两位数字 表示日期, 月份标识第一个字母大写, 后两个字母小写, 日期小于 10 时要补 前导 0s…

汇编基础语法和指令总结+案例(用32位汇编实现插入排序)

目录 前提知识 案例 c的插入排序 32位汇编代码 代码分析 效果展示 前提知识 常用指令add指令 sub指令 mul乘法指令 div除法指令 inc(自增)(即) dec(自减)(即--) cmp&#xf…