Linux 系统管理

查看系统中所有进程,使用BSD操作系统格式
ps aux

查看系统中所有进程,使用Linux标准命令格式
ps -le

[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 125300 3764 ? Ss 21:00 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 21:00 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 21:00 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 21:00 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 21:00 0:00 [kworker/u256:0]
root 7 0.0 0.0 0 0 ? S 21:00 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 21:00 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 21:00 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 21:00 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 21:00 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 21:00 0:00 [watchdog/1]

说明:每一行代表一个系统进程
USER: 进程是由哪个用户产生的
PID: 进程的ID号
%CPU: 该进程占用cpu资源的百分比,占用越高,进程越耗费资源
%MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源
VSZ: 该进程占用虚拟机内存的大小,单位KB
RSS: 该进程占用实际物理内存的大小,单位KB
TTY: 该进程是在哪个终端中运行的。其中tty 1-tty7代表本地图形终端。
pts/0-255代表虚拟终端。
STAT: 进程状态。常见的状态有:R:运行、S:睡眠、T:停止专业、s:包含子进程、+:位于后台
START: 该进程的启动时间
TIME: 该进程占用cpu的运算时间,注意不是系统时间
COMMAND: 产生此进程的命令名

查看系统健康状态:
top [选项]
选项:
-d 时间 每隔多久更新的秒数,默认3s更新一次。

top - 23:06:35 up 2:06, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 109 total, 1 running, 108 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995924 total, 532772 free, 278052 used, 185100 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 541780 avail Mem

说明:
23:06:35 :系统当前时间
up 2:06 :系统运行了2小时06分
2 users :当前系统登录了2个用户
load average: 0.00, 0.01, 0.05 :系统在之前1分钟 5分钟 15分钟的平均负载,一般认为小于1时负载较小,大于1时系统超负荷
Tasks: 109 total, 1 running, 108 sleeping, 0 stopped, 0 zombie:系统中的进程总数,1个正在运行,108个睡眠,0个正在停止,
0个僵尸进程(正在终止,但还没有终止完成)
0.2 us :cpu被用户占了0.2
0.2 sy : cpu被系统占了0.2
0.0 ni :cpu被改变过进程的优先级占用了多少
99.7 id :cpu的空闲比
0.0 wa :等待输入/输出的进程占用cpu的百分比
0.0 hi : 硬中断请求服务占用cpu的百分比
0.0 si :软中断请求服务占用cpu的百分比
0.0 st :虚拟时间百分比

995924 total:物理内存总大小
278052 used: 物理内存已经用了的大小
532772 free: 物理内存空闲大小
85100 buff/cache :正在做缓冲
2097148 total:交换分区(虚拟内存)的总大小
0 used:已使用交换分区的大小
2097148 free:空闲交换分区的大小


查看进程树
pstree [选项]
-p: 显示进程的PID
-u:显示进程的所属用户

终止进程:

重启进程:kill -1 进程id号
强制杀死进程: kill -9 进程id号

killall -9 进程名


根据终端号踢用户
pkill -9 -t tty1

[root@localhost ~]# w
23:48:24 up 2:47, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 21:00 2:47m 0.01s 0.01s -bash
root pts/0 192.168.31.144 21:00 0.00s 0.09s 0.00s w

把进程放入到后台

方法1: 在命令后面加 &
方法2: 在命令执行过程中 按下ctrl+z
区别:方法1,命令在后台是运行的;方法2,命令在后台是暂停的

tar -zcf etc.tar.gz /etc &
top ctrl+z

查看后台的工作
jobs [-l]
选项: -l:显示工作的PID
注:“+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。
“-”号代表倒数第二个放入后台的工作。
[root@localhost ~]# jobs -l
[1] 6907 停止 (信号) top
[2]- 6909 停止 (信号) top
[3]+ 6911 停止 (信号) top

只有最后一个和倒数第二个有符号。

将后台暂停的工作恢复到前台执行
fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别

把后台暂停的工作恢复到后台执行
bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。(top vi)

系统资源查看

vmstat 监控系统资源

vmstat 2 3 #监听3次每次间隔两秒

dmesg #开机时内核检测信息
dmesg | grep CUP

free 查看内存使用状态
free -b/k/m/g

缓存(cache):加速数据从硬盘读取的
缓冲(buffer):加速数据写入硬盘的

查看cpu信息:
cat /proc/cpuinfo 断电信息消失

uptime命令:
uptime
显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据

查看系统与内核相关信息
uname [选项]
-a:查看系统所有的相关信息;
-r:查看内核版本;
-s:查看内核名称。

查看系统位数
file /bin/ls[root@localhost ~]# file /bin/ls

/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
说明:x86-64:64位

查询系统的发行版本:
lsb_release -a

列出进程打开或使用的文件信息
lsof [选项]
选项 -c 只列出以字符串开头的进程打开的文件
-u 只列出某个用户的进程打开的文件
-p 列出某个PID进程打开的文件

[root@localhost ~]# lsof -p 7111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kworker/1 7111 root cwd DIR 253,0 4096 64 /
kworker/1 7111 root rtd DIR 253,0 4096 64 /
kworker/1 7111 root txt unknown /proc/7111/exe

[root@localhost ~]# lsof -c writeback
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
writeback 21 root cwd DIR 253,0 4096 64 /
writeback 21 root rtd DIR 253,0 4096 64 /
writeback 21 root txt unknown /proc/21/exe

[root@localhost ~]# lsof -u root

系统定时任务

crond 服务管理与访问控制

查询crond是否启动的两种方式:
[root@localhost ~]# systemctl list-unit-files |grep crond
crond.service enabled

[root@localhost ~]# ps aux | grep crond
root 7185 0.0 0.1 126284 1608 ? Ss 00:18 0:00 /usr/sbin/crond -n
root 7194 0.0 0.0 112724 988 pts/0 R+ 00:22 0:00 grep --color=auto crond
说明:auto crond 带auto是自启动

crontab [选项]
选项:
-e: 编辑crontab 定时任务
-l: 查询crontab 任务
-r: 删除当前用户所有crontab任务

进入crontab编辑界面。会打开vim编辑你的工作
格式:
* * * * * 执行的任务

第一个:一小时当中的第几分钟 0-59
第二个:一天 当中的第几个小时 0-23
第三个:一个月当中的第几天 1-31
第四个:一年 当中的第几个月 1-12
第五个:一周当中的星期几 0-7(0和7都代表星期日)

举例:最小单位是每分钟
45 22 * * * 命令 在22点45分执行命令
0 17 * * 1 命令 每周1的17点0分
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨4点每隔10分钟执行一次
0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令(注:星期几和几号最好不要同时出现,因为他们定义的都是天,容易晕,和的关系)

实例:
*/5 * * * * /bin/echo "11">>/tmp/test
5 5 * * 2 /sbin/shutdown -r now
0 5 1,10,15 * * /root/sh/autobak.sh

注意:系统中这样 date +%y%m%d 不行时按照该写法 date +\%y\%m\%d

定时备份案例
[root@localhost dbbak]# cat ../scriptt/autobak.sh
#!/bin/bash
ehco "开始:" >> /tmp/dbbak/11.txt
date=$(date +\%y\%m\%d)
size=$(du -sh /etc)
echo "Date: $date!" > /tmp/dbbak/dbinfo.txt
echo "Size: $size!" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf etc_$date.tar.gz /etc /tmp/dbbak/dbinfo.txt &>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt

[root@localhost dbbak]# crontab -l
0 5 * * * sh /tmp/scriptt/autobak.sh

问题不执行,换成 * 5 * * * sh /tmp/scriptt/autobak.sh 可以执行

原文地址:https://www.cnblogs.com/javasl/p/11190534.html