一、进程及网络基础
本章聚焦 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 远程连接),加深对命令和配置的理解,避免 "纸上谈兵"。