系统管理

《LinuxShell脚本攻略》,Chap-9:管理重任



简介

GNU/Linux的生态系统是由运行的程序、服务、连接的设备、文件系统、用户等组成。按照我们需要的方式对整个系统有一个微观并对操作系统进行整体上的管理,这就是系统管理的主要目的。


收集进程信息

进程是程序运行实例(runing instance)。
同一程序的多个实例可以同时运行,但他们的进程ID却互不相同。

进程管理相关的重要命令是:

  • top, display Linux processes;
  • ps, report a snapshot of the current processes;
  • pgrep, look up or signal processes based on name and other attributes.
#ps命令
#-f, 显示更多进程信息
ps -f

#-e,every; -a,all
ps -ef
ps -ax

#-o, 指定想要的列
ps -e -o parameter1,parameter2...
ps -eo comm,pcpu,pmem

#pccpu  CPU占用率
#pid    进程ID
#ppid   父进程ID
#pmem   内存使用率
#comm   命令名
#cmd    简单命令
#user   启动进程的用户
#nice   优先级
#time   累积的CPU时间
#etime  进程启动后度过的时间
#tty    所关联的TTY设备
#euid   有效用户ID
#stat   进程状态

#--sort,根据参数对ps输出进行排序
#+升序,-降序
ps -eo comm,pcpu,pmem --sort -pcpu
ps -eo comm,pcpu,pmem --sort -pcpu,+pmem

#-C, 给定命令全名找出PID
ps -C cmd -o comm,pid

#-u, 指定有效用户列表
#-U, 指定真实用户列表
ps -u root -U zhang -o user,pcpu

#-t, 用TTY过滤输出
ps -t TTY1,TTY2...
ps -t pts/0,pts/1 -ef

#-L, 显示进程相关信息
#LWP线程ID, NLWP线程数量
ps -efL


#pgrep命令, 获得一个特定命令的PID列表
#它只需要命令的一部分即可
pgrep cmd
pgre inotif
pgrep bas

#-d, 指定定界符
pgrep rsync -d ":"

#-u, 指定进程的用户
pgrep -u root,zhang rsync

#-c, 返回匹配的进程数量
pgrep -c rsync


#top命令
top


杀死进程以及发送响应信息

在Unix-Like环境中与进程有关的一个重要概念就是信号。
信号是一种进程间通信机制,它用来中断运行的进程以执行某些操作。终止程序也是通过使用信号技术来实现的。

ctrl+C,ctrl+Z这种作业都属于信号。

  • kill 命令可用来向进程发送信号;
  • trap 命令用来处理所接收的信号;
  • killall 以名字方式来杀死进程.
#列出所有可用信号
kill -l

#-s, 发送信号
#信号名称和信号数都可以
kill -信号数 PID
kill -s SIGNAL PID

#常用信号
#SIGHUP 1 --对控制进程或终端进行挂起检测(hangup detection);
#SIGINT 2 --当按下ctrl+c时发送该信号;
#SIGKILL 9 --强行杀死进程;
#SIGTERM 15 --终止进程;
#SIGTSTP 20 --当按下crtl+z时发送该信号.


#killall, 通过命令名终止进程
killall -s SIGNAL PName
killall -信号数 PName


#trap, 捕捉并响应信号
trap 'signal-handler-func' SIGNAL LIST


which, whereis, file, whatis与平均负载

  • which hows the full path of (shell) commands。找出某个命令的位置;
  • whereis locate the binary, source, and manual page files for a command。不仅返回命令路径,还能打印命令手册的位置以及命令源代码路径;
  • file determine file type。用来确定文件类型;
  • whatis display manual page descriptions。输出简短描述信息;
  • 平均负载(load average),是系统运行总负载量的一个重要参数。它指明了系统中可运行进程总量的平均值。平均负载由三个值来指定,第一个指明1分钟内的平均值,第二个指明5分钟内的平均值,第三个指明15分钟内的平均值。

单核CPU,类似于单车道,负载在 0.00-1.00 之间正常;
多核CPU,类似于多车道,负载在 核数*(0.00-1.00) 之间正常;
安全的系统负载,单核应该在 0.7 以下;

#查看平均负载
uptime
cat /proc/loadavg
#0.00 0.01 0.05 1/355 44955
#分母355表示系统进程总数, 分子表示正在运行的进程数, 最后一个数字表示最近运行进程ID


向用户终端发送消息

系统管理员可能需要向网络中所有主机上的所有用户或特定用户的终端发送消息。
wall命令用来向所有当前登录用户的终端写入消息。

在Linux系统中,终端是作为设备存在的。因此那些打开的终端在dev/pts/中都会与对应的设备节点文件。向特定设备写入数据将会在对应的终端显示出消息。

echo "It's just a test" | wall

#查看用户对应的/dev/pts/,并向某一个用户终端发送消息
ll /dev/pts | awk '{print $3,$6}'
echo"Haha" > /dev/pts/[1,2,3...]


收集系统信息

包括主机名、内核版本、Linux发行版本、CPU信息、内存信息、磁盘分区信息等。

#主机名
hostname
uname -n

#内核版本,架构
uname -r
uname -m
uname -a

#Linux发行版本
cat /etc/redhat-release

#CPU相关信息
lscpu
cat /proc/cpuinfo
cat /proc/cpuinfo | grep 'model name'

#内存详细信息
free -h
cat /proc/meminfo

#分区信息
cat /proc/partitions
fdisk -l

#系统详细信息
lshw


用/proc收集信息

在GNU/Linux操作系统中,/proc是一个位于内存中的伪文件系统(in-memory pseudo filesystem)。
它的引用是为了提供一个可以从用户空间(user space)读取系统参数的接口。

可以对/proc中的文件和子目录进行cat来获取信息,所有内容都是易读的格式化文本。

/proc/下的数字目录,包含了对应进程的相关信息;
/proc/environ,包含于进程相关联的环境变量;
/proc/cwd,是一个到进程工作目录的符号链接;
/proc/fbcat,包含了由进程所使用的文件描述符。


用cron进行调度

GNU/Linux系统包含了各种用于调度任务的工具。cron就是其中之一,它通过守护进程crond使得任务能够以固定的时间间隔在系统后台自动运行。
cron利用的是一个被称为“cron表(cron table)”的文件,这个文件中存储了需要执行的脚本或命令的调度列表以及执行时间。

crontab -e
#* * * * * cmd
#分钟(0-59)
#小时(0-23)
#天(1-31)
#月(1-12)
#工作日(0-7),0和7都代表周天
#命令

#*号,所有值
#,号,范围。1,3,5,7,9
#-号,连续范文。1-10
#/号,*/10;0-8/20

#栗子
* 0-6 * * * /home/zhang/test.sh
1,3,5,7,9 * * * * /home/zhang/test.sh
*/5 * * * * /home/zhang/test.sh

#-l,查看cron表
cron -l

#-r,移除cron表
cron -r


用户管理常用命令

#添加用户
userall

#删除用户
userdel
--remove-all-file删除与用户相关的所有文件

#修改shell
chsh

#修改用户属性
usermod

#修改密码过期时间
chage

#修改密码
passwd

#登录到一个新组
newgrp

#添加、删除组
groupadd
groupdel

#指纹
finger
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 143,396评论 1 301
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 61,482评论 1 258
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 94,858评论 0 213
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 41,131评论 0 179
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,903评论 1 256
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,847评论 1 177
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,454评论 2 273
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,206评论 0 167
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 29,047评论 6 232
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,563评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,344评论 2 215
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,667评论 1 231
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,264评论 0 32
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,163评论 2 214
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,546评论 3 207
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,630评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,032评论 0 166
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,572评论 2 231
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,668评论 2 232

推荐阅读更多精彩内容