Linux 学习笔记之进程管理、网络基础与常用软件安装

一、进程及网络基础

本章聚焦 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逐一终止。
1.1.3 jobs 命令:管理后台任务

jobs命令用于查看当前终端中处于 "后台运行" 或 "暂停" 状态的任务,配合快捷键可实现任务的前后台切换,提升终端操作效率。

  • 核心用法
    • 查看后台任务:直接执行jobs,输出结果包含任务编号(如[1])、状态(如Running/Stopped)及任务命令;
    • 暂停前台任务:在前台运行的命令中按Ctrl + z,可将任务暂停并转入后台;
    • 终止后台任务:kill %任务编号(如kill %1终止编号为 1 的后台任务);
    • 启动暂停的后台任务:bg %任务编号(后台继续运行)或fg %任务编号(调回前台运行)。
  • 注意事项 :后台任务依赖当前终端,若终端关闭,后台任务会随之终止;若需长期运行任务,建议使用nohup命令(文档未提及,属于补充说明)。

1.2 网络基础:连通性与端口排查

网络命令是排查服务器网络问题、配置网络参数的关键工具,本章重点介绍pingifconfignetstattelnetftpwgetcurl等实用命令。

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终止对应进程。
  • telnet:远程终端连接 telnet通过 23 端口(默认)实现远程终端连接,可用于测试目标主机的端口是否开放。

    • 安装(Ubuntu 16.04):需先联网安装服务,命令为sudo apt-get install openbsd-inetdsudo apt-get install telnetd,安装后重启服务:sudo /etc/init.d/openbsd-inetd restart
    • 测试端口:telnet 目标IP 端口号,示例:telnet 121.199.29.84 80(测试云服务器 80 端口是否开放);
    • 退出连接:输入exitlogout
  • ftp:文件传输协议 ftp通过 21 端口(控制端口)和 20 端口(数据端口)实现客户端与服务器的文件上传 / 下载,语法与操作如下:

    1. 连接服务器:ftp 目标IP(如ftp 192.168.0.23);
    2. 输入用户名和密码(如服务器的root账号及密码);
    3. 常用命令:
      • ls/dir:查看服务器当前目录文件;
      • cd/lcdcd切换服务器目录,lcd切换本地目录;
      • get 文件名:下载服务器文件到本地;
      • put 文件名:上传本地文件到服务器;
      • bye:退出 ftp 连接。
1.2.3 下载工具:wgetcurl

wgetcurl是 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(更直观,推荐使用)。

二、常见软件安装与配置

本章围绕 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. 在线安装

    1. 更新源:sudo apt-get update
    2. 安装 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. 验证安装

    1. 本地验证:在服务器终端执行curl http://localhost,若显示 Apache 默认欢迎页 HTML 内容,说明安装成功;
    2. 远程验证:在本地浏览器输入http://云服务器公网IP,若显示欢迎页,说明服务正常(需开放 80 端口,见下文 "端口配置");
  • 4. 部署目录与权限配置

    • 默认部署目录/var/www/html(将网页文件放入此目录即可通过http://IP/文件名访问);
    • 权限问题解决
      • 方案 1:临时提升目录权限(简单直接):sudo chmod -R 777 /var/www/html-R级联生效,所有用户可读写执行);
      • 方案 2:修改部署目录(更安全,适合长期使用):
        1. 在家目录创建自定义目录:mkdir -p ~/apache/htdocs-p级联创建);
        2. 修改 Apache 配置文件:
          • 编辑站点配置:sudo vi /etc/apache2/sites-available/000-default.conf,将DocumentRoot /var/www/html改为DocumentRoot /home/ubuntu/apache/htdocsubuntu替换为实际用户名);
          • 编辑主配置:sudo vi /etc/apache2/apache2.conf,在<Directory>区块中添加:<Directory /home/ubuntu/apache/htdocs></Directory>
        3. 重启服务生效:sudo /etc/init.d/apache2 restart
  • 5. 端口配置(阿里云) :Apache 默认使用 80 端口,阿里云服务器需手动开放该端口:登录阿里云控制台 → 进入 "网络与安全 - 安全组" → 添加 "入方向" 规则,端口范围填80/80,授权对象填0.0.0.0/0(允许所有 IP 访问),同时建议开放8000-9999端口(用于后续 Jar 包部署)。

2.2.2 MySQL:关系型数据库

MySQL 是开源的关系型数据库,常用于存储项目数据(如用户信息、业务数据),文档详细介绍了 MySQL 的安装、远程连接配置及问题修复。

  • 1. 在线安装(MySQL Server)

    1. 更新源:sudo apt-get update
    2. 安装 MySQL:sudo apt-get install mysql-server;
    3. 安装过程:会提示设置数据库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 数据库名;
  • 4. 远程连接配置(Navicat 连接) :默认 MySQL 仅允许本地登录,需配置远程访问(如用本地 Navicat 连接云服务器 MySQL):

    1. 登录 MySQL:mysql -u root -p
    2. 授权远程用户:
      • 切换到mysql系统数据库:use mysql;
      • 查看用户主机权限:select host,user from user;(默认root用户的hostlocalhost,仅允许本地访问);
      • 修改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;
    3. 修改 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
    4. 重启 MySQL 服务:sudo service mysql restart
    5. 开放 3306 端口(阿里云):进入安全组,添加 "入方向" 规则,端口范围3306/3306,授权对象0.0.0.0/0
    6. 本地 Navicat 连接:
      • 新建 MySQL 连接,连接名自定义(如 "云服务器 MySQL");
      • 主机名填云服务器公网 IP,端口3306,用户名root,密码root123
      • 点击 "连接测试",显示 "连接成功" 即可。
  • 5. 常见问题修复

    • root 密码忘记
      1. 编辑/etc/mysql/my.cnf,在[mysqld]后添加skip-grant-tables(跳过密码验证);
      2. 重启 MySQL:sudo service mysql restart
      3. 无密码登录:mysql -u root
      4. 重置密码:set password for 'root'@'%'=password('新密码');,刷新权限:flush privileges;
      5. 删除my.cnf中添加的skip-grant-tables,重启 MySQL 即可;
    • 1045 错误(密码错误) :用 root 登录 MySQL,执行set password for '用户名'@'%'=password('新密码');,刷新权限;
    • 2003 错误(无法连接服务器) :检查 MySQL 服务是否启动、3306 端口是否开放、bind-address是否配置为0.0.0.0
2.2.3 JDK:Java 开发环境

JDK 是 Java 程序运行的基础,文档提供 "压缩包安装"(推荐,版本可控)和 "在线安装" 两种方式,此处重点介绍压缩包安装(更灵活)。

  • 1. 压缩包安装(JDK 8)
    1. 检查是否已安装:java -version(若显示java version "1.8.x",说明已安装);
    2. 下载与上传:在 Oracle 官网下载jdk-8u171-linux-x64.tar.gz,通过scp或 FTP 工具上传到云服务器/opt目录;
    3. 解压:cd /optsudo tar xvfz jdk-8u171-linux-x64.tar.gz(解压后生成jdk1.8.0_171目录);
    4. 建立软链接(可选,方便版本切换):sudo ln -s jdk1.8.0_171 jdk(后续可通过/opt/jdk访问 JDK 目录);
    5. 配置环境变量:
      • 系统级别(所有用户生效,推荐):编辑/etc/profilesudo vi /etc/profile,在文件末尾添加:

        bash

        复制代码
        export JAVA_HOME=/opt/jdk1.8.0_171  # JDK解压目录
        export CLASSPATH=.
        export PATH=$JAVA_HOME/bin:$PATH
      • 用户级别(仅当前用户生效):编辑~/.bashrc,添加上述相同内容;

    6. 生效环境变量:source /etc/profile(系统级别)或source ~/.bashrc(用户级别);
    7. 验证安装:java -version,若显示 JDK 版本信息(如java version "1.8.0_171"),说明安装成功;
  • 2. 在线安装(OpenJDK 8)
    1. 安装 JRE(Java 运行环境):sudo apt install openjdk-8-jre-headless
    2. 安装 JDK(Java 开发工具):sudo apt install openjdk-8-jdk-headless
    3. 验证:java -versionjavac -version(在线安装无需手动配置环境变量,默认路径为/usr/lib/jvm/java-8-openjdk-amd64)。
2.2.4 NodeJS:JavaScript 运行环境

NodeJS 常用于运行前端项目(如 Vue、React)或后端服务(如 Express、Koa),文档提供 "在线安装"(推荐)和 "压缩包安装" 两种方式。

  • 1. 在线安装(推荐,版本自动适配)
    1. 更新源:sudo apt-get update
    2. 安装 NodeJS:sudo apt-get install nodejs
    3. 安装 npm(Node 包管理工具):sudo apt-get install npm
    4. 验证安装:
      • 查看 Node 版本:node -v(应显示v14.x及以上);
      • 查看 npm 版本:npm -v(应显示6.x及以上);
    5. 版本过低修复:若node -v显示版本过低(如v4.x),执行以下命令升级:
      1. 卸载旧版本:sudo apt-get purge npmsudo apt-get purge nodejs
      2. 安装新版本依赖:sudo apt-get install nodejs-legacy
      3. 重新安装 npm:sudo apt-get install npm
      4. 通过n模块升级 Node(n是 Node 版本管理工具):sudo npm install -g nsudo n latest(安装最新版 Node);
      5. 升级 npm:sudo npm install npm@latest -g
  • 2. 压缩包安装(版本可控)
    1. 上传压缩包:将本地node-v14.4.0-linux-x64.tar.xz上传到云服务器~/目录;

    2. 解压与移动:

      • 解压:tar -xvf node-v14.4.0-linux-x64.tar.xz
      • 移动到/opt目录并改名:sudo mv ~/node-v14.4.0-linux-x64 /opt/node-v14
    3. 配置环境变量:编辑/etc/profile,在末尾添加:

      bash

      复制代码
      export NODE_HOME=/opt/node-v14
      export PATH=$PATH:$NODE_HOME/bin
    4. 生效与验证:source /etc/profilenode -vnpm -v(应显示正确版本);

    5. 压缩包解压问题:若xz后缀无法解压,先安装xz-utilssudo 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 系统运维与开发的核心技能:

  1. 进程管理 :通过ps查看进程详情,kill终止异常进程,jobs管理后台任务,保障系统资源合理分配;
  2. 网络基础 :用ping/traceroute排查连通性,ifconfig/netstat查看网络配置,telnet/ftp实现远程连接与文件传输,wget/curl完成资源下载;
  3. 软件安装:掌握 Apache(网页部署)、MySQL(数据库)、JDK(Java 环境)、NodeJS(JS 运行环境)的安装、配置与问题修复,为后续项目部署打下基础。

这些技能是云服务器操作的 "基本功",建议结合实际场景练习(如部署一个简单的 HTML 页面、搭建 MySQL 远程连接),加深对命令和配置的理解,避免 "纸上谈兵"。

相关推荐
Micro麦可乐3 小时前
Centos Stream 9 中Docker安装出现 download.docker.com:443 的问题解决
linux·docker·centos·podman
poemyang3 小时前
你的程序为何卡顿?从LINUX I/O三大模式寻找答案
linux·rpc
---学无止境---4 小时前
Linux中早期控制台初始化和注册的实现
linux
撬动未来的支点4 小时前
DMABUF 核心概念:Linux 的“共享白板”机制
linux
Purple Coder4 小时前
面试-上海电力大学研一的学习经验
学习
迷枫7124 小时前
19.1 TCP 和 UDP 有什么区别?
网络·tcp/ip·udp
取酒鱼食--【余九】5 小时前
深度学习经典网络解析:ResNet
网络·人工智能·深度学习·神经网络·resnet·卷积神经网络·残差神经网络
风清再凯5 小时前
05-k8s网络
网络·容器·kubernetes
今麦郎xdu_5 小时前
【Linux系统】命令行参数和环境变量
linux·服务器·c语言·c++