【一俢哥的 Liunx 学习笔记】调兵遣将

Liunx 系统的运行,需要大量的程序参与,如果没有程序的系统,那整个系统就成了一个寂静的兵马俑,一个一个没有生机的士兵存放的地方,如果要让整个军队运作起来,需要骑兵、步兵、弓弩手等等协作完成各种任务,调动起他们的积极性,才能让整个军队充满生机。Liunx 系统也一样,这些二进制的执行会行程一个一个的程序,程序会让系统的磁盘、内容、CPU 运作起来,这样系统也会起到自己应有的作用。

本篇文章你会学习到:

  • Job 管理
  • 程序管理
  • 系统资源
  • SELiunx

Job 管理

在 Linux 下,可以简单的把 Job 理解为,一个或多个命令及其运行的任务。也就是说,之前所所的 cp mv tar,等在 bash 环境中运行的命令就是 Job,那么我们控制这些任务的运行状况,就是 Job 管理。要进行 bash 的 Job 管理必须要注意到的限制是:

  • 这些工作所触发的程序必须来自于你 shell 的子程序(只管理自己的 bash);
  • 前景:你可以控制与下达指令的这个环境称为前景的工作 (foreground);
  • 背景:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 调用该工作;
  • 背景中“执行”的程序不能等待 terminal/shell 的输入(input)

Job 管理相关命令

  • jobs:查看当前背景工作状态;
    • -l -r -s
  • &:将命令放到背景总执行;
  • fg:将背景的任务调到前景来处理;
  • bg:让工作在背景下的状态变成运行中;
  • kill:管理背景的任务;
    • -l -1 -2 -9 -15
  • nohup:离线执行任务。

当运行一个命令时,我们可以通过 [ctrl]+z 将它放入到背景中暂停起来,接下来我们可以通过 jobs 看到所有的 Job 工作状态:

jay-liunx% jobs -l
[1]  - 12773 suspended  vim hell.txt
[2]  + 12829 suspended  find / -print

通过 fg 命令可以将背景任务重新唤起:

jay-liunx% fg %2
// 省略...

通过 & 直接在背景中运行:

jay-liunx% tar -zpcf /tmp/etc.tar.gz /etc &

通过 kill 命令,来管理背景中的 Jobs:

jay-liunx% kill -9 %2

通过 nohup 命令,可以让任务离线执行,即使是注销了,任务也能执行完。

jay-liunx% nohup ./task.sh &

程序管理

Liunx 下的程序包括 Liunx 所有的命令、服务以及应用程序,他们运行后都会有一个 PID。管理程序,就是查看、修改、停止这些正在运行的程序。

  • ps:查看某个时间点运行的程序;
    • -l -A -w -a -u -x
  • top:查看实时程序的变化;
    • -d -b -n -p
  • kill:关闭程序;
    • -l -1 -2 -9 -15
  • killall:关闭所有相关程序;
    • -i -e -I
  • nice:设置程序的执行权重;
  • renice:重新调整程序的执行权重;

通过 ps 可以查看运行的程序:

jay-liunx% ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000 13174 13173  0  80   0 -  3094 -      pts/0    00:00:00 zsh
0 R  1000 13407 13174  0  80   0 -  3955 -      pts/0    00:00:00 ps
  • F:程序标示;1-代表此子程序仅进行 fork 没事实际执行;4-代表程序权限为 root;
  • S:程序状态;R-运行中;S-休眠中;D-不可唤醒;T:停止状态;Z:僵尸状态;
  • UID:程序拥有者 ID;
  • PID:程序 ID;
  • PPID:父级程序 ID;
  • C:CPU 使用率;
  • PRI:执行优先级;
  • NI:
  • ADDR/SZ/WCHAN:和内存有关;
  • TTY:登陆者终端位置;
  • TIME:使用 CPU 时间;
  • CMD:使用什么指令或者程序;
jay-liunx% ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2 122096  9360 ?        Ss   7月14   0:08 /sbin/init
root         2  0.0  0.0      0     0 ?        S    7月14   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   7月14   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   7月14   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   7月14   0:00 [kworker/0:0H-kblockd]
root         8  0.0  0.0      0     0 ?        I<   7月14   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    7月14   0:18 [ksoftirqd/0]
  • USER:程序使用者;
  • PID:程序 ID;
  • %CPU:CPU 使用率;
  • %MEM:内存使用率;
  • VSZ:使用的虚拟内存;
  • RSS:使用的固定内存;
  • TTY:登陆者终端位置;
  • STAT:程序状态(R/S/T/Z);
  • START:启动时间;
  • TIME:使用 CPU 运行时间;
  • COMMAND:使用什么指令;

通过 top 可以查看实时程序的变化:

我们一个一个看每个参数代表的含义:

jay-liunx% top
top - 19:11:27 up 9 days, 18:26,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 242 total,   1 running, 241 sleeping,   0 stopped,   0 zombie
%Cpu0  :  1.0 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3932772 total,  1228504 free,   747788 used,  1956480 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2741112 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND
13490 jay       20       16640   4064   3204 R   1.0   0.1   0:00.72 top
13469 root      20                           I   0.7         0:00.42 [kworker/u8:2-events_power_efficient]
 8949 jay       20      630440 122824  76112 S   0.3   3.1  10:24.50 /opt/google/chrome/chrome
 8986 jay       20      404064  69612  40268 S   0.3   1.8  22:47.71 /opt/google/chrome/chrome
  • 第一行:当前时间, 开机时间, 登陆人数, 系统工作负载
  • 第二行:任务总数, 运行数量, 休眠数量, 停止数量, 僵尸数量
  • 第三行:CPU 使用状况
  • 第四行:内存使用状况
  • 第五行:交换区使用状况
  • 第六行:实时程序状况
    • PID:程序 ID;
    • USER:程序使用者;
    • PR:Priority 的简写,程序优先级;
    • NI:Nice 的简写
    • %CPU:CPU 使用率;
    • %MEM:内存使用率;
    • TIME+:使用 CPU 累加时间;
    • COMMAND:使用什么指令

通过 nicerenice 设置程序执行优先级

nice 的范围是 -20 到 19,我们可以通过设置 nice 来改变程序的 Priority:

jay-liunx% ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000 14875 14874  1  80   0 -  3095 -      pts/0    00:00:00 zsh
0 R  1000 14880 14875  0  80   0 -  3955 -      pts/0    00:00:00 ps
jay-liunx% nice -n 5 zs
jay-liunx% ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000 14875 14874  0  80   0 -  3095 -      pts/0    00:00:00 zsh
0 S  1000 14888 14875  0  85   5 -  3103 -      pts/0    00:00:00 zsh
0 R  1000 14889 14888  0  85   5 -  3955 -      pts/0    00:00:00 ps

系统资源

出了前面的系统 Job、程序外,还有一些系统资源我们要查看,例如:内存、网络、开机状况等等:

  • free:查看内存使用情况;
    • -b -t -s -c
  • uname:查看系统与核心相关信息;
    • -a -s -r -m -p -i
  • uptime:观察系统启动时间与工作负载;
  • netstat:查看网络信息;
    • -a -t -u -n -l -p
  • vmstat:查看系统资源变化。

这部分比较简单,自己尝试并查阅资料就可以搞懂里面的内容了。

SELiunx

SELinux 是 “Security Enhanced Linux” 的缩写,是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。这里不详细说这个,平时去修改相关内容也比较少。

〖坚持的一俢〗

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,754评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,618评论 0 10
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,150评论 0 34
  • 一个程序被加载到内存当中运行,那么在内存内的那个数据就被称为进程(process)。进程是操作系统上非常重要的概念...
    Zhang21阅读 1,864评论 0 12
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,313评论 0 5