一、进程及网络基础
本章聚焦 Linux 系统的进程管理与网络命令,通过实用工具和命令,实现进程监控、终止及网络连通性排查,是保障服务器正常运行的必备技能。
1.1 进程管理:监控与终止进程
进程是 Linux 系统中运行的程序实例,通过进程管理工具可实时查看进程状态、资源占用情况,并终止异常进程,避免系统资源浪费。
1.1.1 ps 命令:查看进程信息
ps
命令用于列出当前系统中正在运行的进程,支持多种选项展示不同维度的进程详情,最常用的组合为ps -ef
,可显示完整的进程信息。
-
核心语法 :
ps [选项]
-
常用选项 :
-e
:列出系统中所有准备就绪或正在运行的进程(不遗漏任何进程);-f
:以 "全格式" 显示进程详情,包含进程 ID、父进程 ID、所有者、启动时间等关键信息。
-
示例与字段说明 :执行
ps -ef | grep telnet
(结合grep
筛选含 "telnet" 的进程),输出结果包含以下核心字段:字段 含义 说明 UID 用户 ID 标识 进程所属用户的 ID,用于区分进程归属 PID 进程 ID 进程的唯一标识,是后续终止进程的关键 PPID 父进程 ID 生成当前进程的 "父进程" ID,可追溯进程来源 STIME 进程开始时间 进程启动的时间,格式为 "日 时:分" TTY 终端 进程关联的终端(如 pts/0
表示远程终端),?
表示无关联终端TIME 进程占用 CPU 时间 进程从启动到当前累计占用的 CPU 时长 CMD 进程执行命令 启动进程的完整命令(如 /usr/sbin/telnetd
表示 telnet 服务进程)
1.1.2 kill 命令:终止进程
当进程异常卡死或占用过多资源时,可通过kill
命令终止进程,核心是通过 "进程 ID(PID)" 精准定位目标进程。
- 核心语法 :
kill [信号选项] PID
- 常用信号选项 :
- 无选项:默认发送
15
号信号(SIGTERM),要求进程 "优雅退出"(允许进程保存数据后终止); -9
:发送9
号信号(SIGKILL),强制终止进程(适用于无响应的顽固进程,可能导致数据丢失,需谨慎使用)。
- 无选项:默认发送
- 示例 :
- 终止 PID 为 12418 的进程:
kill -9 12418
; - 结合
ps
命令批量终止进程:先通过ps -ef | grep mysql
找到所有 mysql 相关进程的 PID,再用kill -9 PID
逐一终止。
- 终止 PID 为 12418 的进程:
1.1.3 jobs 命令:管理后台任务
jobs
命令用于查看当前终端中处于 "后台运行" 或 "暂停" 状态的任务,配合快捷键可实现任务的前后台切换,提升终端操作效率。
- 核心用法 :
- 查看后台任务:直接执行
jobs
,输出结果包含任务编号(如[1]
)、状态(如Running
/Stopped
)及任务命令; - 暂停前台任务:在前台运行的命令中按
Ctrl + z
,可将任务暂停并转入后台; - 终止后台任务:
kill %任务编号
(如kill %1
终止编号为 1 的后台任务); - 启动暂停的后台任务:
bg %任务编号
(后台继续运行)或fg %任务编号
(调回前台运行)。
- 查看后台任务:直接执行
- 注意事项 :后台任务依赖当前终端,若终端关闭,后台任务会随之终止;若需长期运行任务,建议使用
nohup
命令(文档未提及,属于补充说明)。
1.2 网络基础:连通性与端口排查
网络命令是排查服务器网络问题、配置网络参数的关键工具,本章重点介绍ping
、ifconfig
、netstat
、telnet
、ftp
、wget
、curl
等实用命令。
1.2.1 基础网络命令:连通性与配置查看
命令 | 功能 | 常用选项与示例 |
---|---|---|
ping |
测试本机与目标主机的连通性 | -s :指定数据包大小;示例:ping -s 1024 www.baidu.com (向百度发送 1024 字节的数据包,测试连通性) |
ifconfig |
查看 / 配置网卡信息 | -a :显示所有网卡(包括未启用的网卡);示例:ifconfig -a (查看所有网卡的 IP 地址、MAC 地址等信息),类似 Windows 的ipconfig |
netstat |
查看网络连接、路由表、端口占用 | -rn :查看本机路由表(-r 显示路由表,-n 以 IP 地址显示,不解析主机名);-na :查看所有网络连接(-n 不解析,-a 显示所有连接);示例:netstat -rn (查看路由表,确认网关是否正确) |
traceroute |
追踪数据包从本机到目标主机的路由路径 | 示例:traceroute www.sina.com.cn (查看数据包经过的所有路由器,用于排查网络延迟节点) |
1.2.2 端口与服务相关命令
端口是服务器对外提供服务的 "入口",常用命令可实现端口占用排查、远程连接测试等功能:
-
lsof
:查看端口占用进程 语法:sudo lsof -i:端口号
(需sudo
权限),示例:- 查看 80 端口(HTTP 服务默认端口)占用情况:
sudo lsof -i:80
; - 查看 3306 端口(MySQL 默认端口)占用情况:
sudo lsof -i:3306
。若端口被占用,可通过输出的 "PID" 字段,结合kill -9 PID
终止对应进程。
- 查看 80 端口(HTTP 服务默认端口)占用情况:
-
telnet
:远程终端连接telnet
通过 23 端口(默认)实现远程终端连接,可用于测试目标主机的端口是否开放。- 安装(Ubuntu 16.04):需先联网安装服务,命令为
sudo apt-get install openbsd-inetd
、sudo apt-get install telnetd
,安装后重启服务:sudo /etc/init.d/openbsd-inetd restart
; - 测试端口:
telnet 目标IP 端口号
,示例:telnet 121.199.29.84 80
(测试云服务器 80 端口是否开放); - 退出连接:输入
exit
或logout
。
- 安装(Ubuntu 16.04):需先联网安装服务,命令为
-
ftp
:文件传输协议ftp
通过 21 端口(控制端口)和 20 端口(数据端口)实现客户端与服务器的文件上传 / 下载,语法与操作如下:- 连接服务器:
ftp 目标IP
(如ftp 192.168.0.23
); - 输入用户名和密码(如服务器的
root
账号及密码); - 常用命令:
ls
/dir
:查看服务器当前目录文件;cd
/lcd
:cd
切换服务器目录,lcd
切换本地目录;get 文件名
:下载服务器文件到本地;put 文件名
:上传本地文件到服务器;bye
:退出 ftp 连接。
- 连接服务器:
1.2.3 下载工具:wget
与curl
wget
和curl
是 Linux 下常用的命令行下载工具,支持 HTTP、HTTPS、FTP 协议,可实现文件下载、网页内容获取等功能。
-
wget
:强大的后台下载工具特点:支持断点续传、后台下载,即使退出终端也可继续执行。- 核心语法:
wget [参数] [URL]
; - 常用参数:
-b
:启动后转入后台下载;-O 文件名
:将下载文件重命名(避免文件名混乱);-c
:断点续传(适用于大文件下载中断后继续);--no-check-certificate
:忽略 HTTPS 证书验证(避免证书错误导致下载失败);
- 示例:
- 下载码云代码压缩包:
wget https://gitee.com/falling4u/wykl_management/repository/archive/master.zip
; - 后台下载并指定文件名:
wget -b -O wykl.zip https://gitee.com/falling4u/wykl_management/repository/archive/master.zip
。
- 下载码云代码压缩包:
- 核心语法:
-
curl
:多功能网络工具特点:除下载外,还可用于测试网页访问、发送 HTTP 请求等。- 基础用法:
curl http://www.linux.com
(直接在终端显示目标网页的 HTML 内容,用于测试服务器是否能访问该网站); - 保存网页内容:
- 方式 1:利用重定向:
curl http://www.linux.com >> linux.html
; - 方式 2:使用
-o
参数:curl -o linux.html http://www.linux.com
(更直观,推荐使用)。
- 方式 1:利用重定向:
- 基础用法:
二、常见软件安装与配置
本章围绕 Linux 系统中开发与部署常用的软件(Apache、MySQL、JDK、NodeJS 等),详细介绍在线安装、编译安装、配置优化及问题排查方法,所有操作基于 Ubuntu 系统(文档推荐 Ubuntu 16.04 64 位)。
2.1 软件安装基础:源更新与卸载
在 Ubuntu 系统中,软件安装依赖 "软件源"(存储软件包的服务器地址),安装前更新源可确保获取最新版本的软件包,卸载软件则需根据安装方式选择对应命令。
2.1.1 源更新
- 核心命令 :sudo apt-get update;
- 作用:从软件源服务器获取最新的软件包列表,避免因列表过时导致安装失败或版本过低;
- 注意事项 :每次在线安装软件前,建议先执行该命令;若使用阿里云服务器,无需额外更换源(阿里云默认源已优化),其他环境可通过替换
/etc/apt/sources.list
文件更新源(文档提供代理源:wget http://134.175.154.93/sources.list.now
)。
2.1.2 软件卸载
- 彻底卸载(推荐) :sudo apt-get purge 软件名称(不仅删除软件本体,还删除配置文件,避免残留);
- 普通卸载 :
sudo apt-get remove 软件名称
(仅删除软件本体,保留配置文件); - 示例 :彻底卸载 Apache2:
sudo apt-get purge apache2
。
2.2 常用软件安装与配置
2.2.1 Apache2:HTTP 服务器(网页部署)
Apache 是开源的 HTTP 服务器,常用于部署静态网页(如 HTML、CSS、JavaScript),是 Web 项目上线的基础工具。
-
1. 在线安装 :
- 更新源:
sudo apt-get update
; - 安装 Apache2:sudo apt-get install apache2;
- 更新源:
-
2. 服务管理(启动 / 停止 / 重启) :
命令 功能 sudo /etc/init.d/apache2 start
启动 Apache2 服务 sudo /etc/init.d/apache2 stop
停止 Apache2 服务 sudo /etc/init.d/apache2 restart
重启 Apache2 服务(配置修改后需执行) sudo service apache2 status
查看 Apache2 服务状态(确认是否运行) -
3. 验证安装 :
- 本地验证:在服务器终端执行
curl http://localhost
,若显示 Apache 默认欢迎页 HTML 内容,说明安装成功; - 远程验证:在本地浏览器输入
http://云服务器公网IP
,若显示欢迎页,说明服务正常(需开放 80 端口,见下文 "端口配置");
- 本地验证:在服务器终端执行
-
4. 部署目录与权限配置 :
- 默认部署目录 :
/var/www/html
(将网页文件放入此目录即可通过http://IP/文件名
访问); - 权限问题解决 :
- 方案 1:临时提升目录权限(简单直接):
sudo chmod -R 777 /var/www/html
(-R
级联生效,所有用户可读写执行); - 方案 2:修改部署目录(更安全,适合长期使用):
- 在家目录创建自定义目录:
mkdir -p ~/apache/htdocs
(-p
级联创建); - 修改 Apache 配置文件:
- 编辑站点配置:
sudo vi /etc/apache2/sites-available/000-default.conf
,将DocumentRoot /var/www/html
改为DocumentRoot /home/ubuntu/apache/htdocs
(ubuntu
替换为实际用户名); - 编辑主配置:
sudo vi /etc/apache2/apache2.conf
,在<Directory>
区块中添加:<Directory /home/ubuntu/apache/htdocs></Directory>
;
- 编辑站点配置:
- 重启服务生效:
sudo /etc/init.d/apache2 restart
;
- 在家目录创建自定义目录:
- 方案 1:临时提升目录权限(简单直接):
- 默认部署目录 :
-
5. 端口配置(阿里云) :Apache 默认使用 80 端口,阿里云服务器需手动开放该端口:登录阿里云控制台 → 进入 "网络与安全 - 安全组" → 添加 "入方向" 规则,端口范围填
80/80
,授权对象填0.0.0.0/0
(允许所有 IP 访问),同时建议开放8000-9999
端口(用于后续 Jar 包部署)。
2.2.2 MySQL:关系型数据库
MySQL 是开源的关系型数据库,常用于存储项目数据(如用户信息、业务数据),文档详细介绍了 MySQL 的安装、远程连接配置及问题修复。
-
1. 在线安装(MySQL Server) :
- 更新源:
sudo apt-get update
; - 安装 MySQL:sudo apt-get install mysql-server;
- 安装过程:会提示设置数据库
root
用户密码(需牢记,如root123
),再次输入确认;
- 更新源:
-
2. 服务管理 :
命令 功能 sudo service mysql start
启动 MySQL 服务 sudo service mysql stop
停止 MySQL 服务 sudo service mysql restart
重启 MySQL 服务 `sudo netstat -tap grep mysql` 查看 MySQL 是否启动(若显示 LISTEN
,说明服务正常) -
3. 登录与使用 :
- 本地登录:mysql -u 用户名 -p(如
mysql -u root -p
,输入密码后进入 MySQL 命令行); - 核心命令:
- 退出 MySQL:
exit;
(需加;
表示命令结束); - 查看数据库:
show databases;
; - 使用数据库:
use 数据库名;
;
- 退出 MySQL:
- 本地登录:mysql -u 用户名 -p(如
-
4. 远程连接配置(Navicat 连接) :默认 MySQL 仅允许本地登录,需配置远程访问(如用本地 Navicat 连接云服务器 MySQL):
- 登录 MySQL:
mysql -u root -p
; - 授权远程用户:
- 切换到
mysql
系统数据库:use mysql;
; - 查看用户主机权限:
select host,user from user;
(默认root
用户的host
为localhost
,仅允许本地访问); - 修改
root
用户主机为所有 IP:update user set Host='%' where User='root';
(%
表示允许所有 IP 访问); - 授予所有权限:
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'root123' with grant option;
(root123
替换为实际密码,*.*
表示所有数据库的所有表); - 刷新权限:
flush privileges;
;
- 切换到
- 修改 MySQL 配置文件:
- 编辑主配置:
sudo vi /etc/mysql/my.cnf
,在[mysqld]
区块添加bind-address=0.0.0.0
(允许所有 IP 连接); - 编辑子配置:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
,将bind-address = 127.0.0.1
改为bind-address = 0.0.0.0
;
- 编辑主配置:
- 重启 MySQL 服务:
sudo service mysql restart
; - 开放 3306 端口(阿里云):进入安全组,添加 "入方向" 规则,端口范围
3306/3306
,授权对象0.0.0.0/0
; - 本地 Navicat 连接:
- 新建 MySQL 连接,连接名自定义(如 "云服务器 MySQL");
- 主机名填云服务器公网 IP,端口
3306
,用户名root
,密码root123
; - 点击 "连接测试",显示 "连接成功" 即可。
- 登录 MySQL:
-
5. 常见问题修复 :
- root 密码忘记 :
- 编辑
/etc/mysql/my.cnf
,在[mysqld]
后添加skip-grant-tables
(跳过密码验证); - 重启 MySQL:
sudo service mysql restart
; - 无密码登录:
mysql -u root
; - 重置密码:
set password for 'root'@'%'=password('新密码');
,刷新权限:flush privileges;
; - 删除
my.cnf
中添加的skip-grant-tables
,重启 MySQL 即可;
- 编辑
- 1045 错误(密码错误) :用 root 登录 MySQL,执行
set password for '用户名'@'%'=password('新密码');
,刷新权限; - 2003 错误(无法连接服务器) :检查 MySQL 服务是否启动、3306 端口是否开放、
bind-address
是否配置为0.0.0.0
。
- root 密码忘记 :
2.2.3 JDK:Java 开发环境
JDK 是 Java 程序运行的基础,文档提供 "压缩包安装"(推荐,版本可控)和 "在线安装" 两种方式,此处重点介绍压缩包安装(更灵活)。
- 1. 压缩包安装(JDK 8) :
- 检查是否已安装:
java -version
(若显示java version "1.8.x"
,说明已安装); - 下载与上传:在 Oracle 官网下载
jdk-8u171-linux-x64.tar.gz
,通过scp
或 FTP 工具上传到云服务器/opt
目录; - 解压:
cd /opt
→sudo tar xvfz jdk-8u171-linux-x64.tar.gz
(解压后生成jdk1.8.0_171
目录); - 建立软链接(可选,方便版本切换):
sudo ln -s jdk1.8.0_171 jdk
(后续可通过/opt/jdk
访问 JDK 目录); - 配置环境变量:
-
系统级别(所有用户生效,推荐):编辑
/etc/profile
:sudo vi /etc/profile
,在文件末尾添加:bash
export JAVA_HOME=/opt/jdk1.8.0_171 # JDK解压目录 export CLASSPATH=. export PATH=$JAVA_HOME/bin:$PATH
-
用户级别(仅当前用户生效):编辑
~/.bashrc
,添加上述相同内容;
-
- 生效环境变量:
source /etc/profile
(系统级别)或source ~/.bashrc
(用户级别); - 验证安装:java -version,若显示 JDK 版本信息(如
java version "1.8.0_171"
),说明安装成功;
- 检查是否已安装:
- 2. 在线安装(OpenJDK 8) :
- 安装 JRE(Java 运行环境):
sudo apt install openjdk-8-jre-headless
; - 安装 JDK(Java 开发工具):
sudo apt install openjdk-8-jdk-headless
; - 验证:
java -version
、javac -version
(在线安装无需手动配置环境变量,默认路径为/usr/lib/jvm/java-8-openjdk-amd64
)。
- 安装 JRE(Java 运行环境):
2.2.4 NodeJS:JavaScript 运行环境
NodeJS 常用于运行前端项目(如 Vue、React)或后端服务(如 Express、Koa),文档提供 "在线安装"(推荐)和 "压缩包安装" 两种方式。
- 1. 在线安装(推荐,版本自动适配) :
- 更新源:
sudo apt-get update
; - 安装 NodeJS:
sudo apt-get install nodejs
; - 安装 npm(Node 包管理工具):
sudo apt-get install npm
; - 验证安装:
- 查看 Node 版本:node -v(应显示
v14.x
及以上); - 查看 npm 版本:npm -v(应显示
6.x
及以上);
- 查看 Node 版本:node -v(应显示
- 版本过低修复:若
node -v
显示版本过低(如v4.x
),执行以下命令升级:- 卸载旧版本:
sudo apt-get purge npm
、sudo apt-get purge nodejs
; - 安装新版本依赖:
sudo apt-get install nodejs-legacy
; - 重新安装 npm:
sudo apt-get install npm
; - 通过
n
模块升级 Node(n
是 Node 版本管理工具):sudo npm install -g n
→sudo n latest
(安装最新版 Node); - 升级 npm:
sudo npm install npm@latest -g
;
- 卸载旧版本:
- 更新源:
- 2. 压缩包安装(版本可控) :
-
上传压缩包:将本地
node-v14.4.0-linux-x64.tar.xz
上传到云服务器~/
目录; -
解压与移动:
- 解压:
tar -xvf node-v14.4.0-linux-x64.tar.xz
; - 移动到
/opt
目录并改名:sudo mv ~/node-v14.4.0-linux-x64 /opt/node-v14
;
- 解压:
-
配置环境变量:编辑
/etc/profile
,在末尾添加:bash
export NODE_HOME=/opt/node-v14 export PATH=$PATH:$NODE_HOME/bin
-
生效与验证:
source /etc/profile
→node -v
、npm -v
(应显示正确版本); -
压缩包解压问题:若
xz
后缀无法解压,先安装xz-utils
:sudo apt install xz-utils
,再执行unxz node-v14.4.0-linux-x64.tar.xz
(解压为tar
包),最后sudo tar -xvf node-v14.4.0-linux-x64.tar
。
-
三、总结
本章涵盖 Linux 系统运维与开发的核心技能:
- 进程管理 :通过
ps
查看进程详情,kill
终止异常进程,jobs
管理后台任务,保障系统资源合理分配; - 网络基础 :用
ping
/traceroute
排查连通性,ifconfig
/netstat
查看网络配置,telnet
/ftp
实现远程连接与文件传输,wget
/curl
完成资源下载; - 软件安装:掌握 Apache(网页部署)、MySQL(数据库)、JDK(Java 环境)、NodeJS(JS 运行环境)的安装、配置与问题修复,为后续项目部署打下基础。
这些技能是云服务器操作的 "基本功",建议结合实际场景练习(如部署一个简单的 HTML 页面、搭建 MySQL 远程连接),加深对命令和配置的理解,避免 "纸上谈兵"。