在日常的系统管理工作中,我们经常需要处理各种常见的配置和监控任务。本文整理了Linux系统管理中最常用的操作命令,包括软件安装、时区配置和资源监控,帮助你快速定位和解决问题。

Node.js安装与配置

Node.js是现代Web开发中不可或缺的运行时环境。在CentOS系统上,我们可以通过NodeSource官方源快速安装最新版本。

使用NodeSource安装Node.js

NodeSource提供了Node.js的官方RPM包,确保我们能够获得最新的稳定版本。

安装步骤

# 1. 添加NodeSource仓库(以Node.js 8.x为例)
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

# 2. 使用yum安装Node.js
sudo yum -y install nodejs

# 3. 验证安装
node -v
npm -v

版本选择

根据项目需求选择合适的Node.js版本:

  • LTS版本:生产环境推荐使用,长期支持
  • Current版本:最新特性,适合开发测试
# Node.js 16.x LTS
curl --silent --location https://rpm.nodesource.com/setup_16.x | sudo bash -

# Node.js 18.x LTS
curl --silent --location https://rpm.nodesource.com/setup_18.x | sudo bash -

安装后配置

# 配置npm国内镜像源(加速包下载)
npm config set registry https://registry.npmmirror.com

# 全局安装常用工具
npm install -g pm2           # 进程管理器
npm install -g yarn          # 包管理工具
npm install -g npx           # 包执行器

系统时区配置

正确的时区配置对于日志记录、定时任务和系统监控至关重要。Linux系统使用timedatectl命令来管理系统时区和时间设置。

查看当前时区状态

# 查看详细的时间和日期状态
timedatectl

# 输出示例:
#      Local time: 三 2019-06-06 14:33:59 CST
#  Universal time: 三 2019-06-06 06:33:59 UTC
#        RTC time: 三 2019-06-06 06:33:59
#       Time zone: Asia/Shanghai (CST, +0800)
#     NTP enabled: yes
#NTP synchronized: yes
# RTC in local TZ: no

列出所有可用时区

# 列出所有时区
timedatectl list-timezones

# 筛选特定地区时区
timedatectl list-timezones | grep Asia

# 常用时区:
# Asia/Shanghai      - 中国标准时间 (UTC+8)
# Asia/Tokyo         - 日本标准时间 (UTC+9)
# Asia/Hong_Kong     - 香港时间 (UTC+8)
# America/New_York   - 美国东部时间
# Europe/London      - 格林威治时间

修改系统时区

# 设置时区为上海时间
sudo timedatectl set-timezone Asia/Shanghai

# 设置时区为UTC
sudo timedatectl set-timezone UTC

# 验证时区修改
timedatectl
date

时间同步配置

# 启用自动时间同步(NTP)
sudo timedatectl set-ntp true

# 禁用自动时间同步
sudo timedatectl set-ntp false

# 手动同步时间(如果使用chrony)
sudo chronyc sources -v

传统时区设置方法

如果你的系统使用传统的时区配置方式:

# 查看当前时区
date +%Z

# 修改时区(传统方法)
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 编辑时区配置文件
sudo vim /etc/sysconfig/clock
# 添加内容:
# ZONE="Asia/Shanghai"

内存监控与问题排查

内存管理是系统性能优化的关键环节。掌握内存使用情况的监控和排查技巧,能够帮助我们及时发现和解决性能瓶颈。

查看整体内存使用情况

# 显示内存使用概览
free -h

# 输出示例:
#               total        used        free      shared  buff/cache   available
# Mem:           7.6G        2.1G        3.2G        234M        2.3G        5.1G
# Swap:          2.0G          0B        2.0G

# 持续监控内存使用(每2秒更新)
free -hs 2

# 显示更详细的内存信息
cat /proc/meminfo

进程内存占用排序

查看哪些进程占用了最多内存,并按占用率降序排列:

# 显示所有占用内存的进程,并按内存使用率排序
ps -o pid,user,%mem,command ax | awk '($3 > 0){print}' | sort -b -k3 -r

# 输出示例:
#  PID USER     %MEM COMMAND
# 1234 root      5.2 /usr/bin/python3 /usr/bin/ansible
# 5678 nginx     3.8 nginx: worker process
# 9012 mysql     12.5 /usr/sbin/mysqld

创建便捷的内存检查命令

将常用命令设置为别名,方便日常使用:

# 添加到 ~/.bashrc 或 ~/.bash_profile
alias memcheck="ps -o pid,user,%mem,command ax | awk '(\$3 > 0){print}' | sort -b -k3 -r"

# 重新加载配置
source ~/.bashrc

# 使用别名快速查看
memcheck

高级内存监控工具

top命令

# 启动交互式监控工具
top

# 在top中按以下键进行排序:
# M - 按内存使用率排序
# P - 按CPU使用率排序
# q - 退出

# 直接显示内存排序的结果
top -b -n 1 -o %MEM | head -n 20

htop命令(需要安装)

# 安装htop
sudo yum install htop

# 启动htop(更友好的界面)
htop

# 功能特点:
# - 彩色显示,更直观
# - 支持鼠标操作
# - 可纵向/横向滚动
# - 支持杀死进程

内存占用详细分析

# 查看特定进程的内存详情
ps -p 1234 -o pid,ppid,cmd,%mem,%cpu

# 查看所有进程的完整内存信息
ps aux --sort=-%mem | head -20

# 使用smem工具查看更准确的内存占用(需要安装)
sudo yum install smem
sudo smem -k -s memory

# 查看共享内存使用情况
ipcs -m

内存泄漏排查

当怀疑某个进程存在内存泄漏时:

# 持续监控特定进程的内存使用
watch -n 5 "ps -p 1234 -o pid,ppid,cmd,%mem,%cpu,vsz,rss"

# 记录内存使用日志(每分钟记录一次)
while true; do
    echo "$(date): $(ps -p 1234 -o %mem,rss)" >> mem_log.txt
    sleep 60
done

# 分析内存变化趋势
cat mem_log.txt | awk '{print $2, $3}'

系统内存优化建议

# 清理页面缓存(需要root权限)
sudo sync && sudo sysctl -w vm.drop_caches=3

# 查看内存相关内核参数
sysctl -a | grep memory

# 调整swappiness值(0-100,值越小越倾向于使用RAM)
sudo sysctl vm.swappiness=10
# 持久化配置
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

实用技巧总结

日常检查清单

# 1. 系统基础信息检查
echo "=== 系统时间 ===" && timedatectl
echo "=== 内存使用 ===" && free -h
echo "=== CPU负载 ===" && uptime

# 2. 资源占用Top进程
echo "=== 内存占用Top5 ===" && ps -o pid,user,%mem,command ax | awk '($3 > 0){print}' | sort -b -k3 -r | head -5
echo "=== CPU占用Top5 ===" && ps -o pid,user,%cpu,command ax | awk '($3 > 0){print}' | sort -b -k3 -r | head -5

# 3. 磁盘使用情况
echo "=== 磁盘使用 ===" && df -h

快速排查命令集合

# 环境检查
node --version           # Node.js版本
npm --version            # npm版本
timedatectl              # 时间时区状态

# 资源监控
free -h                  # 内存概览
df -h                    # 磁盘使用
du -sh *                 # 当前目录大小
top -o %MEM              # 内存排序

# 进程管理
ps aux | grep name       # 查找进程
kill -9 PID              # 强制结束进程
systemctl status service # 服务状态

配置文件位置速查

# Node.js相关
~/.npmrc                 # npm配置文件
~/.bashrc                # 环境变量配置

# 时区配置
/etc/localtime           # 当前时区链接
/usr/share/zoneinfo/     # 时区数据文件

# 系统配置
/etc/sysctl.conf         # 内核参数配置
/etc/systemd/system/     # systemd服务配置

故障排查流程

当遇到系统问题时,按照以下流程进行排查:

  1. 检查时间和时区

    timedatectl
    date
    
  2. 检查资源使用情况

    free -h
    df -h
    top
    
  3. 查看系统日志

    journalctl -xe
    tail -f /var/log/messages
    
  4. 检查服务状态

    systemctl status服务名
    systemctl list-units --failed
    

结语

Linux系统管理是一个需要不断积累经验的领域。本文整理的命令和技巧涵盖了日常工作中最常见的场景,建议将常用的命令保存为别名或脚本,提高工作效率。

记住这些关键点:

  • 使用官方源安装软件,确保安全性和稳定性
  • 正确的时区配置对日志和定时任务至关重要
  • 定期监控内存使用,及时发现性能问题
  • 建立自己的命令速查清单,不断积累经验

通过掌握这些基础操作,你将能够更自信地应对各种系统管理任务。