Linux~系统管理。

Linux~系统管理。



进程管理。

进程查看。
进程~what。

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

ls 也是进程。


进程管理的作用。
  • 判断服务器的健康状态。
  • 查看系统中所有进程。
  • 杀死进程。

查看进程中所有进程。
  • 查看系统中所有进程。使用 BSD 操作系统格式。
[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19232  1404 ?        Ss   Feb18   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Feb18   0:00 [kthreadd]
。。。

a ——> 所有前台进程。
x ——> 所有后台进程。
u ——> 用户。

  • USER
    进程是由哪个用户产生的。
  • PID
    进程的 ID 号。
  • %CPU
    进程占用 CPU 资源的百分比,占用越高,进程越耗费资源。
  • %MEM
    进程占用物理内存的百分比,占用越高,进程越耗费资源。
  • VSZ
    进程占用虚拟内存的大小,单位 KB。
  • RSS
    进程占用实际物理内存的大小,单位 KB。
  • TTY
    进程是在哪个终端运行的。
    ? ——> 不是终端执行,系统内核执行。
    其中 tty1~tty7 代表本地控制台终端。
    tty1~tty6 是本地字符界面终端。
    tty7 是图形终端。
    pts/0~256 代表虚拟终端。
  • STAT
    进程状态。
    R ——> 运行。
    S ——> 睡眠。
    T ——> 停止状态。
    s ——> 包含子程序。
    + ——> 位于后台。
  • START
    该进程的启动时间。
  • TIME
    该进程占用 CPU 的运算时间,注意不是系统时间。
  • COMMAND
    产生此进程的命令名。

如果加 -。(UNIX 不识别 -)。

[root@localhost ~]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19232  1404 ?        Ss   Feb18   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Feb18   0:00 [kthreadd]
。。。
  • 查看系统中所有进程。使用 Linux 标准命令格式。
[root@localhost ~]# ps -le
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 -  4808 poll_s ?        00:00:01 init
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
。。。

-l ——> 详细信息。
-e ——> 所有。


查看系统健康状态。

top [选项]

-d 秒数 ——> 指定 top 命令每隔几秒更新。默认是 3 秒。

在 top 命令的交互模式当中可以执行的命令。

? 或 h ——> 显示交互模式的帮助。
P ——> 以 CPU 使用率排序。默认。
M ——> 以内存的使用率排序。
N ——> 以 PID 排序。
q ——> 退出 top。


终止进程。
  • kill。
# 查看可用的进程信号。
geek@geek-PC:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX
  • 常用信号。
信号代号 信号名称 说明
1 SIGNUP 该信号让进程立即关闭,然后重新读取配置文件后重启。
2 SIGINT 程序终止信号,用于终止前台进程。
8 SIGFPE 在发生致命算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有算术错误。
9 SIGKILL 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制终止进程。
14 SIGALRM 时钟定时信号。计算的是实际的时间或时钟时间,alarm 函数使用该信号。
15 SIGTERM 正常结束进程的信号,kill 命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试 SIGKILL 信号,也就是信号 9。
18 SIGCONT 该个信号可以让暂停的进程恢复执行,本信号不能被阻断。
19 SIGSTOP 该信号可以暂停前台进程,相当于 Ctrl + z 快捷键。本信号不能被阻断。

kill -1 PID ——> 重启。
kill -9 PID ——> 强制结束。

  • killall。

[root@localhost ~]# killall [选项] [信号] 进程名
// 按照进程名杀死进程。
选项。
-i。——> 交互式。询问是否要杀死某个进程。
-I。——> 忽略进程名的大小写。


  • pkill。

[root@localhost ~]# pkill [选项] [信号] 进程名
// 按照进程名终止进程。
选项。
-t 终端号。——> 按照终端号踢出用户。

# 使用 w 命令查询本机已经登录的用户。
[root@localhost ~]# w
 11:54:36 up 9 min,  2 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                11:45    9:18   0.04s  0.04s -bash
root     pts/0    192.168.223.1    11:45    0.00s  0.05s  0.00s w
# 强制杀死从 tty1 终端登录的进程。
[root@localhost ~]# pkill -9 -t tty1
[root@localhost ~]# w
 11:56:20 up 11 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.223.1    11:45    0.00s  0.07s  0.01s w

pstree -p ——> 进程树。
[root@localhost ~]# pstree -p
init(1)─┬─auditd(1201)───{auditd}(1202)
        ├─crond(1393)
        ├─dhclient(1139)
        ├─login(1406)───bash(1428)
        ├─master(1379)─┬─pickup(1383)
        │              └─qmgr(1384)
        ├─mingetty(1408)
        ├─mingetty(1410)
        ├─mingetty(1412)
        ├─mingetty(1414)
        ├─mingetty(1416)
        ├─rsyslogd(1223)─┬─{rsyslogd}(1224)
        │                ├─{rsyslogd}(1226)
        │                └─{rsyslogd}(1227)
        ├─sshd(1289)───sshd(1443)───bash(1446)───pstree(1459)
        ├─udevd(491)─┬─udevd(1423)
        │            └─udevd(1424)
        └─xinetd(1300)

工作管理。

把进程放入后台。
  • tar -zcf etc.tar.gz /etc &
    // 后台继续运行。

  • [root@localhost ~]# top
    // 在 top 命令执行过程中,按下 Ctrl + z 快捷键。
    (后台暂停)


查看后台工作。

[root@localhost ~]# jobs [-l]
选项。
-l。——> 显示工作的 PID。

+ 号代表最近一个放入后台的工作,也是工作恢复时,默认恢复工作。

“-” 号代表倒数第二个放入后台的工作。

[root@localhost ~]# jobs -l
[1]-  1546 Stopped (signal)        top
[2]+  1548 Stopped (signal)        top

将后台暂停的工作恢复到前台执行。
  • fg

[root@localhost ~]# fg %工作号
参数。
%工作号。——> % 号可以省略,但是注意工作号和 PID 的区别。(1, 2, 3)。

  • bg

[root@localhost ~]# bg %工作号

后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。


系统资源管理。

系统资源查看。
vmstat ~ 监控系统资源。

[root@localhost ~] vmstat [刷新延时 刷新次数]

[root@localhost ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 842980   7612  42844    0    0    17     1   12   14  0  0 100  0  0
 0  0      0 842988   7612  42844    0    0     0     0   12   13  0  0 100  0  0
 0  0      0 842988   7612  42844    0    0     0     0    8    9  0  0 100  0  0

dmesg ~ 开机时内核检测信息。

[root@localhost ~]# dmesg

[root@localhost ~]# dmesg | grep CPU


free ~ 查看内存使用状态。

[root@localhost ~]# free [-b | -k | -m | -g]
选项。
-b。——> 以字节为单位显示。
-k。——> 以 KB 为单位显示,「默认」。
-m。——> 以 MB 为单位显示。
-g。——> 以 GB 为单位显示

`


缓存和缓冲的区别。
  • 缓存(cache)是用来加速数据从硬盘中“读取”的。

系统第一次调用一个程序,只能从硬盘中读取,读取完后,先把数据保存在 cache 中。以后其他程序要用这个数据,直接从缓存拿。(内存读写速度 >> 硬盘读写速度)。

  • 而缓冲(buffer)是用来加速“写入”硬盘的。

如果每次保存数据都直接写入硬盘——> 慢。先放在缓冲区,等到达一定量,一起写入硬盘。


查看 CPU 信息 ~ /proc/cpuinfo。
[root@localhost ~]# cat /proc/cpuinfo

uptime

查看系统与内核相关信息。

[root@localhost ~]# uname [选项]

-a。——> 查看系统所有相关信息。
-r。——> 查看内核版本。
-s——> 查看内核名称。


判断当前系统位数。
[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.18, stripped

uname -m


查看当前 Linux 系统的发行版本。
geek@geek-PC:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Deepin
Description:	Deepin 15.11
Release:	15.11
Codename:	stable

列出进程打开或使用的文件信息 ~ lsof。

[root@localhost ~]# lsof [选项]
// 列出进程调用或打开的文件的信息。
选项。
-c 字符串。——> 只列出以字符串开头的进程打开的文件。
-u 用户名。——> 只列出某个用户的进程打开的文件。
-p PID。 ——> 列出某个 PID 进程打开的文件。

[root@localhost ~]# lsof -c init
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
init      1 root  cwd    DIR              253,0     4096      2 /
init      1 root  rtd    DIR              253,0     4096      2 /
init      1 root  txt    REG              253,0   150352 916426 /sbin/init
init      1 root  mem    REG              253,0    66432 261665 /lib64/libnss_files-2.12.so
init      1 root  mem    REG              253,0  1924768 261649 /lib64/libc-2.12.so
init      1 root  mem    REG              253,0    90912 261635 /lib64/libgcc_s-4.4.7-20120601.so.1
init      1 root  mem    REG              253,0    44472 261677 /lib64/librt-2.12.so
init      1 root  mem    REG              253,0   143280 261673 /lib64/libpthread-2.12.so
init      1 root  mem    REG              253,0   265736 261729 /lib64/libdbus-1.so.3.4.0
init      1 root  mem    REG              253,0    39896 261746 /lib64/libnih-dbus.so.1.0.0
init      1 root  mem    REG              253,0   106016 261748 /lib64/libnih.so.1.0.0
init      1 root  mem    REG              253,0   159312 262040 /lib64/ld-2.12.so
init      1 root    0u   CHR                1,3      0t0   4601 /dev/null
init      1 root    1u   CHR                1,3      0t0   4601 /dev/null
init      1 root    2u   CHR                1,3      0t0   4601 /dev/null
init      1 root    3r  FIFO                0,8      0t0   9461 pipe
init      1 root    4w  FIFO                0,8      0t0   9461 pipe
init      1 root    5r   DIR               0,10        0      1 inotify
init      1 root    6r   DIR               0,10        0      1 inotify
init      1 root    7u  unix 0xffff880037bf93c0      0t0   9462 @/com/ubuntu/upstart
init      1 root    8u  unix 0xffff88003d3fb8c0      0t0  13519 socket
[root@localhost ~]# 


系统定时任务。

crond 服务管理与访问。
[root@localhost ~]# service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]
[root@localhost ~]# chkconfig crond on

用户的 crontab 设置。

[root@localhost ~]# crontab [选项]
选项。
-e。——> 编辑 crontab 定时任务。
-l。——> 查询 crontab 任务。
-r。——> 删除当前用户所有 cronyab 任务。

[root@localhost ~]# crontab -l
no crontab for root

默认使用 vi 编辑 /tmp/crontab.HeSBLh

[root@localhost ~]# crontab -e

"/tmp/crontab.HeSBLh" 0L, 0C
格式。
* * * * * command
项目 含义 范围
① * 一小时中的第几分钟 0~59
② * 一天中的第几小时 0~23
③ * 一个月中的第几天 1~31
④ * 一年中的第月 1~12
⑤* 一星期中的星期几 0~7(0 和 7 都代表星期日)。
代码 含义
45 22 * * * 命令 每天 22:45 执行。
0 17 * * 1 命令 每周一的 17:00 执行。
0 5 1, 15 * * 命令 每月 1 号和 15 号 05:00 执行。
40 4 * * 1-5 命令 每周一到周五的 04:40 执行。
*/10 4 * * * 命令 每天 04:00 每隔 10 分钟执行
0 0 1, 15 * 1 命令 每月 1 号 和 15号,每周一的 00:00执行。

注:星期几的几号最好还要同时出现。懵逼。。。

eg.

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

发布了47 篇原创文章 · 获赞 1 · 访问量 1148

猜你喜欢

转载自blog.csdn.net/lyfGeek/article/details/104951522