ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux-系统管理篇

2021-01-27 09:57:34  阅读:154  来源: 互联网

标签:00 系统管理 cron 命令 Master Linux 进程 root


一、前言

“出师未捷身先死,长使英雄泪沾襟”

“春蚕到死丝方尽,蜡炬成灰泪始干”

“春风得意马蹄疾,一日看尽长安花”

“春色满园关不住,一枝红杏出墙来”

“春宵一刻值千金”

静心~!

二、系统管理

1、进程管理

问题1:什么是进程管理?

window:ctrl+alt+delete--->任务管理器

  • 里边的开启服务就是进程

那么我们需要理解清楚:

  • 进程:进程就是启动了的程序-->正在运行的程序-->进程就是有一个PID
  • 程序:程序不一定是运行的,

那为什么我们要对进程进行管理?

  • 进程可以查看一下服务器的健康状态
  • 判断服务器运行了什么进程
  • 进程结束最好是用正确的命令-->你强制关机也可以关闭进程,但是又数据丢失的风险

那么我们应该如何查看进程?

ps命令-->查看

[root@Master ~]# ps -lef | grep sshd
5 S root       1139      1  0  80   0 - 16559 poll_s 21:58 ?        00:00:00 /usr/sbin/sshd
4 S root       1178   1139  0  80   0 - 25521 poll_s 21:58 ?        00:00:00 sshd: root@pts/0 
0 R root       1344   1182  0  80   0 - 25820 -      23:31 pts/0    00:00:00 grep sshd

ps命令

作用:查看进程状态

语法

  • ps 【选项】

选项

  • a:显示所有进程
  • u:显示进程的属主和内存使用情况
  • x:显示没有控制终端的进程
  • -e:显示所有进程
  • -l:长格式显示

注意:

这个命令很简单,但是需要理解输出的内容,十分重要

[root@Master ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19348  1532 ?        Ss   21:58   0:00 /sbin/init
root          2  0.0  0.0      0     0 ?        S    21:58   0:00 [kthreadd]
.........省略............


USER:进程的用户是谁
PID:进程的ID号
%CPU:进程占cpu的百分比,如果高-->耗资源
%MEM:进程占内存的百分比,占比高-->耗资源
VSZ:进程占虚拟内存的大小,默认单位是KB
RSS:进程展示机物理内存的大小,
TTY:进程在哪个终端运行
    终端有1-7个控制台
    1-6是字符界面终端
    7:图形化终端
STAT:进程的状态表示
      D:睡眠状态-->不可唤醒
      R:正在进行的进程
      S:可唤醒的睡眠进程,休眠状态
      T:停止状态,暂停的进程
      X:死掉的进程
      Z:僵尸进程
        
START:进程的启动时间
TIME:进程占用cpu运行的时间
COMMAND:产生进程的命令

[root@Master ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  4837 poll_s 21:58 ?        00:00:00 /sb
1 S root          2      0  0  80   0 -     0 kthrea 21:58 ?        00:00:00 0
1 S root          3      2  0 -40   - -     0 migrat 21:58 ?        00:00:00 0
1 S root          4      2  0  80   0 -     0 ksofti 21:58 ?        00:00:00 0
...............省略.............

top命令

作用:动态查看进程

语法:

  • top 【选项】

选项:

  • -d:每隔多少秒更新
  • -b:结合重定向输出,通常是结合-n指定次数使用
  • -p:看查看PID号 --->指定哪个进程号
  • -u:监听某个用户的进程

一般top命令是交互式的-->所有有自己的交互命令

  • ?或者h:显示帮助
  • P:按照CPU占有率排序
  • M:按照内存排序
  • -N:以PID排序
[root@Master ~]#  top
top - 23:48:58 up  1:50,  1 user,  load average: 0.00, 0.01, 0.02
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1004136k total,   170180k used,   833956k free,     9396k buffers
Swap:  2097148k total,        0k used,  2097148k free,    35312k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
     1 root      20   0 19348 1532 1228 S  0.0  0.2   0:00.81 init 
     ..............省略....................
     
     
23:48:58:当前系统时间
23:48:58:系统运行的时间
1 user:多少个用户在线
load average: 0.00, 0.01, 0.02    :系统在1分钟、5分钟、15分钟的平均负载值
Tasks:  72 total :系统中运行的总进程数
 1 running,  71 sleeping,   0 stopped,   0 zombie  正在运行的进程、休眠的进程、停止的进程、僵尸进程
 
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st  #CPU的占比
Mem:   1004136k total,   170180k used,   833956k free,     9396k buffers        #内存的占比
Swap:  2097148k total,        0k used,  2097148k free,    35312k cached         #交换分区的占比


#把系统的进程保存到文件中分析
[root@Master ~]# top -b -n 1 > top.log

#独立监控sshd的资源
[root@Master ~]# ps -ef | grep sshd
root       1139      1  0 21:58 ?        00:00:00 /usr/sbin/sshd
root       1178   1139  0 21:58 ?        00:00:00 sshd: root@pts/0 
root       1381   1182  0 23:55 pts/0    00:00:00 grep sshd
[root@Master ~]# top -p 1139
top - 23:55:33 up  1:57,  1 user,  load average: 0.00, 0.01, 0.02
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1004136k total,   170428k used,   833708k free,     9464k buffers
Swap:  2097148k total,        0k used,  2097148k free,    35532k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
  1139 root      20   0 66236 1200  484 S  0.0  0.1   0:00.01 sshd 
    

pstree命令

作用:查看进程号,也可以查看进程的依赖关系

语法:

  • pstree 【选项】

选项:

  • -p:显示PID
  • -u:显示进程的所属用户
[root@Master ~]# pstree -p
init(1)─┬─acpid(1122)
        ├─auditd(1070)───{auditd}(1071)
        ├─crond(1151)
        ├─mingetty(1164)
        ├─mingetty(1166)
        ├─mingetty(1168)
        ├─mingetty(1170)
        ├─mingetty(1174)
        ├─mingetty(1176)
        ├─sshd(1139)───sshd(1178)───bash(1182)───pstree(1383)
        └─udevd(489)─┬─udevd(1172)
                     └─udevd(1173)

kill命令

作用:给进程发送信号

语法:

  • kill 【信号】 PID

选项

[root@Master ~]# 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:重启
  • -9:结束进程
[root@Master ~]# ps -aux | grep sshd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root       1139  0.0  0.1  66236  1200 ?        Ss   Jan01   0:00 /usr/sbin/sshd
root       1178  0.0  0.4 102084  4144 ?        Ss   Jan01   0:00 sshd: root@pts/0 
root       1433  0.0  0.0 103324   884 pts/0    S+   00:03   0:00 grep sshd
[root@Master ~]# kill -9  1139

killall命令

作用:杀死进程

语法

  • killall [选项] 信号 进程名

选项:

  • -i:交互式
  • -I:忽略进程名大小写

pkill命令

作用:杀死进程

语法:

  • pkill 【选项】 进程名

选项:

  • -t:按照终端号提出用户
[root@Master ~]# w
 00:08:57 up  2:10,  2 users,  load average: 0.01, 0.02, 0.03
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.75.1     21:59    0.00s  0.14s  0.03s w
root     pts/1    192.168.75.1     00:08    3.00s  0.02s  0.02s -bash

[root@Master ~]# pkill -9 -t pts/1

#直接杀死进程名
[root@Master ~]# pkill  sshd

2、前台后台进程管理

还有另外一种可能,

top命令直接占屏了,存在后端运行和前端的概念

放入后台的命令:

需要持续一段时间的输出

必须没有交互式交流

问题1:Linux如何把程序放入后台?

  • 命令 &
  • 执行过程中ctrl+z
[root@Master ~]# tar -zcf haha.tar.gz / &

#查看在后台运行的进程
[root@Master ~]# jobs
[1]+  Running                 tar -zcf haha.tar.gz / &

问题2:如何把进程恢复到前台?

  • jobs:查看后台运行的进程
  • fg +%工作号
[root@Master ~]# jobs
[1]+  Running                 tar -zcf haha.tar.gz / &
[root@Master ~]# jobs -l
[1]+  1614 Running                 tar -zcf haha.tar.gz / &


#恢复到前台执行
[root@Master ~]# fg %1
tar -zcf haha.tar.gz /

#恢复到后台执行
bg %工作号

问题3:如果管理员离开登陆,如何执行后台命令

#方法一:
    写入/etc/rc.local文件-->重启开机自动执行
#方法二:
    定时任务执行
#nohup命令
[root@Master ~]# nohup find / -name fstab &
[1] 1621
[root@Master ~]# nohup: 忽略输入并把输出追加到"nohup.out"

[1]+  Done                    nohup find / -name fstab
    

3、资源监控

vmstat命令

作用:监控系统资源

语法

  • vmstat 1 3
[root@Master ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  66964  43896 700764    0    0   105    40   23   37  1  0 98  1  0
 0  0      0  66932  43896 700796    0    0     0     0   17   15  0  1 99  0  0
 0  0      0  66932  43896 700796    0    0     0     0    7   10  0  0 100  0  0	
 
 
 1:带班表每隔1秒刷新一次
 3:总共刷新三次
   
procs: 进程信息
    r:代表等待运行的进程数,越多系统越忙
    b:不可唤醒的进程
memory:内存信息字段
    swpd:虚拟内存
    free:空闲内存
    buff:缓冲的内存
    cahce:缓存的内存
swap:交换分区
    si:从磁盘到内存
    so:从内存交换到磁盘
    bi:从块设备读入
    bo:写到块设备的
system:系统信息字段
    in:每秒被中断的进程次数
    cs:切换次数
CPU:cpu信息
    us:非内核消耗cpu百分比
    sy:内核进程消耗cpu百分比     
    id:空闲
    wa:I/O消耗
    st:虚拟机盗用的cpu百分比  

dmesg命令

作用:开机内核检测信息

[root@Master ~]# dmesg | grep CPU
SMP: Allowing 128 CPUs, 127 hotplug CPUs
NR_CPUS:4096 nr_cpumask_bits:128 nr_cpu_ids:128 nr_node_ids:1
PERCPU: Embedded 31 pages/cpu @ffff880003400000 s96600 r8192 d22184 u131072
CPU: Physical Processor ID: 0
mce: CPU supports 8 MCE banks

free命令

作用:查看内存使用状态

[root@Master ~]# free 
             total       used       free     shared    buffers     cached
Mem:       1004136     938024      66112        160      43912     701708
-/+ buffers/cache:     192404     811732
Swap:      2097148          0    2097148

查看内存使用的情况
total:总的数量
used:已使用
free:空闲数

问题1:如何查看cpu信息?

[root@Master ~]# cat /proc/cpuinfo 

[root@Master ~]# cat /proc/meminfo 
MemTotal:        1004136 kB
MemFree:           86572 kB
Buffers:           44856 kB
....省略....

w命令

作用:查看系统中登陆的用户

[root@Master ~]# w
 05:58:50 up  8:00,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                00:16    5:41m  0.02s  0.02s -bash
root     pts/0    192.168.75.1     00:17    0.00s  0.15s  0.04s w

uptime命令

作用:显示系统运行的时间和平均负载值

[root@Master ~]# uptime
 05:59:41 up  8:01,  2 users,  load average: 0.00, 0.01, 0.05

uname命令

作用:查看系统内核信息

[root@Master ~]# uname -a
Linux Master 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

#查看系统的版本
[root@Master ~]# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.8 (Final)
Release:	6.8
Codename:	Final

file命令

作用:判断系统文件的位数来判断系统的位数

[root@Master ~]# file /bin/cat 
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

4、定时任务讲解

at命令

作用:一次性定时任务

语法:

  • at 【选项】 时间

选项:

  • -m:邮件通知用户

时间格式:

  • 小时:分钟
  • 小时:分钟 年月日
#启动at服务
[root@Master ~]# service atd start
正在启动 atd:                                             [确定]

#设定一次性定时任务
[root@Master ~]# at now 
at> ls /etc/fatab
at> <EOT>
job 1 at 2021-01-02 06:07

#结束:ctrl+d

#可以延迟执行一次性命令
[root@Master ~]# at now +2 minutes
at> echo hahaha > /root/haha.txt
at> <EOT>
job 2 at 2021-01-02 06:12

#查看定时任务
[root@Master ~]# at now +10 minutes
at> echo hahaha >> /root/haha.txt
at> <EOT>
job 3 at 2021-01-26 23:58
[root@Master ~]# atq
3	2021-01-26 23:58 a root

#删除at任务
[root@Master ~]# atq
3	2021-01-26 23:58 a root
[root@Master ~]# atrm 3
[root@Master ~]# atq

/etc/at.allow文件

  • 作用:白名单-->里面有的用户才能使用at命令
  • 默认是不存在这个文件

/etc/at.deny文件

  • 作用:拒绝用户使用at命令
  • 默认是存在的,只要把用户写入里面就不能使用at命令

crontab服务

作用:周期性循环执行

  • /etc/cron.allow:白名单-->有的能够使用
  • /etc/cron.deny:黑名单

crontab服务的相关文件

[root@Master ~]# cat /etc/cron
cron.d/       cron.deny     cron.monthly/ cron.weekly/  
cron.daily/   cron.hourly/  crontab  

crontab命令

作用:制作定时任务

语法:

  • crontab 【选项】

选项:

  • -e:编辑定时任务
  • -l:查看定时任务列表
  • -r:删除所有的定时任务
  • -u:指定用户

格式:

  • 分时日月周命令
  • 命令做好是绝对路径

时间格式:

  • ,:指定每个时间点
  • -:指定时间段
  • */10:每隔10分钟
#制作定时任务
从每月的星期五的0点执行打包命令
[root@Master ~]# crontab -e
no crontab for root - using an empty one
0 0 * * 5 /bin/tar -czf etc.tar.gz /etc/

#查看定时任务
[root@Master ~]# crontab -l
0 0 * * 5 /bin/tar -czf etc.tar.gz /etc/

#删除定时任务
[root@Master ~]# crontab -r 
[root@Master ~]# crontab -l
no crontab for root

crontab编写的注意事项:

  • 分是日月周命令,不能缺少一样;
  • 最小范围是分钟、最大时间是月,没有年
  • 周和日一般不设置,避免冲突
  • 命令最好使用绝对路径

crond服务的配置文件

/etc/crontab 是配置文件

[root@Master ~]# vim /etc/crontab 
SHELL=/bin/bash                  #定义使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin   #指定的PATH路径,就是命令的路径,
MAILTO=root                 #报错输出给root发邮件
HOME=/

# For details see man 4 crontabs     #详细帮助信息

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,f
ri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed


#在配置文件最后追加
格式也是分是日月周命令

问题1:如果定时任务设定了,然后系统关机了,错过的定时任务如何处理?

这里有一个anacrontab服务

anacrontab这个会在一天、七天、一个月作为执行周期,判断是否有错过的定时任务;

[root@Master ~]# ls /var/spool/anacron/
cron.daily  cron.monthly  cron.weekly

#这里面记录上次anacron执行的时间,然后与系统时间做对比,
#然后它就会执行定时任务有无漏掉的情况


#查看anacrontab配置文件
[root@Master ~]# vim /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh           #定义使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin            #定义了环境变量
MAILTO=root                           #发送错误给root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45                       #最大的延迟 时间
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22                  #执行的时间范围

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

 

三、结束

“好的围棋要慢慢地下,好的生活历程要细细品味,不要着急把棋盘下满,也不要匆忙的走人生之路。能感受山之美的人不一定要住在山中,能体会水之媚的人不一定要住在水旁,能欣赏象牙球的人不一定要手握象牙球,只要心中有山有水有象牙球就够了,因为最美的事物永远是在心中,不是在眼里”

“假如命运折断了希望的风帆,请不要绝望,岸还在;假如命运凋零了美丽的花瓣,请不要沉沦,春还在。生活中总会有无尽的麻烦,请不要无奈,因为路还在,梦还在,阳光还在,我们还在”

“世事艰辛,命途坎坷,我们也许有时会对命运失望,却永远不能绝望,因为路还在我们自己脚下。只要我们勇敢而坚强地踏出每一步,我们的梦就最终会实现,因为我们知道,阳光总在风雨后,而且,只要我们经历过风雨,迎接我们的就不仅仅是阳光,更有那五彩斑斓的彩虹。让我们勇敢的心灵,去发现希望,拥抱希望吧”

“人生是不可能一帆风顺的,关键是你怎样去看待风浪,当你把风浪当成上帝赐给你的雄壮的美景时,你有哪会觉得这就是“逆境”呢?因此,不要因为风浪而结束你的旅程,须知这是上帝赐予的别样的景致,整日的平风浪静又有什么乐趣呢?学者去欣赏它吧,这样,你才能微笑着把船开到彼岸”

互勉~!

 

标签:00,系统管理,cron,命令,Master,Linux,进程,root
来源: https://blog.csdn.net/Liang_GaRy/article/details/113240939

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有