Linux常用命令——系统管理

发布于 2021-03-17  33 次阅读


系统管理

ps

显示当前进程的状态

参数说明:

  • -e 显示所有进程
  • -A 同 -e
  • -f 全格式(详细信息)
  • -h 不显示标题
  • -a 不与terminal有关的所有进程
  • -u 该用户的相关进程
#查找和php相关的进程
ps -ef | grep php

jps

java ps 显示java程序的进程状态

注意:

  • 需要配置JAVA_HOME
  • 只能显示当前用户的java进程

参数说明:

  • -q 只显示pid
  • -m 输出传递给main方法的参数
  • -l 输出类全名
  • -v 输出传递给JVM的参数

top

显示当前系统正在执行的进程的相关信息

参数说明:

  • -c 显示完整的进程命令
  • -s 保密模式
  • -p <进程号> 指定进程显示
  • -n <次数>循环显示次数

信息说明:

top - 14:06:23 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35
Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.9%us,  3.4%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  32949016k total, 14411180k used, 18537836k free,   169884k buffers
Swap: 32764556k total,        0k used, 32764556k free,  3612636k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
28894 root      22   0 1501m 405m  10m S 52.2  1.3   2534:16 java  

前五行是当前系统情况整体的统计信息区

  • 第一行:任务队列信息
    • 14:06:23 — 当前系统时间
    • up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(没有重启过)
    • 2 users — 当前有2个用户登录系统
    • load average: 1.15, 1.42, 1.44 — 1分钟、5分钟、15分钟的负载情况
    • load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。这个数除以逻辑CPU的数量,结果高于5就表明系统在超负荷运转了。
  • 第二行:Tasks — 任务(进程)
    • 系统现在共有206个进程
    • 运行中的有1个
    • 休眠(sleep)的有205个
    • stoped状态的有0个
    • zombie状态(僵尸)的有0个
  • 第三行:cpu状态信息
    • 5.9%us — 用户空间占用CPU的百分比。
    • 3.4% sy — 内核空间占用CPU的百分比。
    • 0.0% ni — 改变过优先级的进程占用CPU的百分比
    • 90.4% id — 空闲CPU百分比
    • 0.0% wa — IO等待占用CPU的百分比
    • 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
    • 0.2% si — 软中断(Software Interrupts)占用CPU的百分比
  • 第四行:内存状态
    • 32949016k total — 物理内存总量(32GB)
    • 14411180k used — 使用中的内存总量(14GB)
    • 18537836k free — 空闲内存总量(18GB)
    • 169884k buffers — 缓存的内存量 (169M)
  • 第五行:swap交换分区信息
    • 32764556k total — 交换区总量(32GB)
    • 0k used — 使用的交换区总量(0K)
    • 32764556k free — 空闲交换区总量(32GB)
    • 3612636k cached — 缓冲的交换区总量(3.6GB)
  • 第六行:空行
  • 第七行以下:各进程(任务)的状态监控
    • 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 — 进程名称(命令名/命令行)

交互命令:

  • h 显示top交互命令帮助信息
  • c 切换显示命令名称和完整命令行
  • m 以内存使用率排序
  • q 退出
  • P 根据CPU使用百分比大小进行排序
  • T 根据时间/累计时间进行排序

kill

给进程发送一个信号量 默认为15(正常终止程序)

命令格式:

kill [参数] [信号量] 进程号

参数说明:

  • -l 列出所有信号量
  • -9 强制杀死进程
  • 详情见Linux基础

crontab

用来定期执行程序的命令

注意:

  • 当安装完成操作系统之后,默认启动此任务调度命令
  • 每分钟定期检查是否有要执行的工作,有便执行
  • 新建的任务,不会马上执行,至少要过 2 分钟后,除非重启 cron
  • crontab -e和/etc/crontab 不是同一个定时任务,配置不同步
  • 当程序在指定的时间执行后,系统会发一封邮件给当前的用户(/var/spool/mail/用户),显示该程序执行的内容,若是不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1

命令格式:

crontab [ -u user ] file
# 或
crontab [ -u user ] { -l | -r | -e }

参数说明

  • -e 执行文字编辑器(vi)来设定时程表
  • -r 删除目前的时程表
  • -l 列出目前的时程表

时间格式:

f1     f2      f3   f4   f5  command
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |    
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

说明:

  • * 表示每个时间点都执行 例如:每天
  • a-b 表示从第 a 到第 b 这段时间内要执行
  • */n 表示每 n 个时间间隔执行一次
  • a, b, c,... 表示第 a, b, c,... 个时间要执行 例如:第一分钟,第五分钟
  • 使用者也可以将所有的设定先存放在文件中,用 crontab file 来设定执行时间

启动服务:

service cron start # 启动cronjob
service cron stop # 停止cronjob
service cron restart #  重启cronjob

邮箱配置:

  • 在crontab配置文件/etc/crontab中将MAILTO设置邮箱(不适用于crontab -e)
  • 在crontab -e中添加指定的邮箱(未尝试):
# crontab -e在第一行加入:
MAILTO=example@gmail.com 
#自己的外部邮箱地址如果没有装邮件服务器的要先安装一下:
yum install sendmail sendmail-cf m4

# send_mail.sh中的内容:
#!/bin/sh
mailx -s "xxx" my_name@163.com < /home/root/mail_content.txt

可能遇到的问题:

如果 crontab 无法定时执行脚本,但直接通过命令能正常执行,

可能是无法读取环境变量的原因。

解决方法:

  • 所有命令写成绝对路径形式
  • 或在 shell 脚本开头添加:
  • . /etc/profile
    . ~/.bash_profile