Linux学习50 进程优先级、网络客户端工具、shell循环(续Linux学习49)
一、Linux上的作业控制
1、job:
a、前台作业(foregroud):通过终端启动,且启动后会一直占据终端
b、后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端)
c、如何让作业运行于后台?
(1)、运行中的作业
Ctrl + z
注意:送往后台后,作业会转为停止态,恢复前台需要使用fg命令
(2)、尚未启动的作业
1)、# COMMAND &
注意:此类作业虽然被送往后台,但其依然与终端相关,此时如果终端进程终止,与终端相关的进程都会终止。
2)、# nohup COMMAND &
如果希望把送往后台的作业剥离与终端的关系,我们需要使用此种方式
d、现在我们来将三个占据前台的进程通过 Ctrl + z送入后台
查看后台有哪些作业我们可以使用jobs命令
[root@node1 ~]# jobs [1] Stopped top [2]- Stopped vim aaa.txt [3]+ Stopped ping www.baidu.com
我们可以看到有+ 和 -这些符号,是什么意思呢?这些作业我们可以手动去调度他们
e、我们的作业控制有三个命令,这些命令可以带作业号来实现,即作业前面的id,如果我们用命令控制作业时没有带作业号,那么 + 就是被默认管理的,-就是+之后可以被控制的,即优先级
(1)、fg,把作业从后台调度到前台来。
fg [%] [OB_NUM] #比如可以写作 fg %1,或者fg 1调度1号作业
[root@node1 ~]# jobs [1] Stopped top [2]- Stopped vim aaa.txt [3]+ Stopped ping www.baidu.com [root@node1 ~]# fg 2
(2)、bg,让送往后台的作业在后台继续运行
bg [%] [OB_NUM] #比如可以写作bg %1或者bg 1
[root@node1 ~]# jobs [1]+ Stopped top [2] Stopped vim aaa.txt [3]- Stopped ping www.baidu.com [root@node1 ~]# bg 2 [2] vim aaa.txt &
(3)、kill,终止指定的作业,kill的百分号是不能省略的,因为如果省略百分号就kill的是进程号了
[root@node1 ~]# jobs [1]- Stopped top [2]+ Stopped vim aaa.txt [3] Stopped ping www.baidu.com [root@node1 ~]# kill %3 [root@node1 ~]# jobs [1]- Stopped top [2]+ Stopped vim aaa.txt
二、调整进程优先级
1、我们调整进程优先级不是手动操作进程优先级的而是操作nice值的
2、我们用户可管理的静态优先级为 100-139,这个也是我们可以通过nice值调整的优先级范围。1-99的实时优先级也可以调整不过不是通过nice值而是通过其他命令来调整,此处我们只说100-139
3、nice值100到139分别对应于-20到19,进程启动时其Nice值默认为0,因此其优先级为120,假如我们要想获得更多优先级,也就是说要将其优先级调高要怎么办呢?我们有两个命令
a、以指定的nice值启动并运行命令
nice [OPTION] [COMMAND] [ARGU] ...
现在我们首先运行htop命令并且让其后台运行,并且查看此进程的pid,comm,ni三个字段
[root@node1 ~]# ps -axo pid,comm,ni |grep htop 2736 htop 0
现在我们启动top命令时将nice值调整为-5,也就是说此时我们的nice值变为了115了,我们再次查看
[root@node1 ~]# nice -n -5 htop [root@node1 ~]# ps -axo pid,comm,ni |grep htop 2747 htop -5
注意:仅管理员可调低nice值,普通用户只能调高nice值,也就是调低进程优先级
b、如果进程已经启动了我们想要提升nice值怎么办呢?我们可以通过renice命令
renice [-n] NICE PID...
[root@node1 ~]# ps -axo pid,comm,ni |grep htop 2747 htop -5 [root@node1 ~]# renice -n -3 2747 2747 (process ID) old priority -5, new priority -3 [root@node1 ~]# ps -axo pid,comm,ni |grep htop 2747 htop -3
[root@node1 ~]# ps -axo pid,comm,ni,priority |grep htop 2747 htop -3 17
c、查看NICE值和优先级
ps axo pid,ni,priority,comm
4、未涉及到的命令:sar,tsar,iostat,iftop,nethog
三、网络客户端工具
1、ping/lftp/ftp/lftpget/wget
2、ping命令
send ICMP ECHO_REQUEST to network hosts,发送ICMP请求的命令
a、ICMP:Internet Control Message Protocol,互联网控制消息协议
b、ping [OPTION] destination
-c #:发送的ping包个数
[root@node1 ~]# ping -c 2 www.baidu.com PING www.a.shifen.com (36.152.44.95) 56(84) bytes of data. 64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=1 ttl=128 time=82.8 ms 64 bytes from 36.152.44.95 (36.152.44.95): icmp_seq=2 ttl=128 time=71.4 ms --- www.a.shifen.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 71.467/77.155/82.843/5.688 ms
-I interface:指定从哪个接口向外ping
-w #:ping命令超时时长
-W #:一次ping操作中等待对方相应的超时时长
-s #:指明ping 包大小,默认是64字节大小,现在我们来指明是128字节
[root@node1 ~]# ping -s 128 www.baidu.com PING www.a.shifen.com (36.152.44.96) 128(156) bytes of data. 136 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=1 ttl=128 time=70.7 ms 136 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=2 ttl=128 time=74.2 ms
3、hping:(package ping)
a、--fast:可以向对方主机发起攻击,参数可以一秒钟发送10个ping包
[root@node1 /]# hping --fast www.baidu.com
b、--flood:能发多快发多快
[root@node1 /]# hping --flood 192.168.10.13
c、--faster:比faster更快
4、traceroute,路由探测
a、跟踪从源主机到目标主机之间经过的网关
5、ftp命令:
ftp:File Transfer Protocol ,文件传输协议
a、ftp服务的命令行客户端工具
(1)、用户名一般是anonymous(匿名)或ftp
(2)、help:可以敲击help命令来获取子命令
(3)、ls:可以通过ls 查看ftp服务器上的目录,并且通过cd命令对目录切换
(4)、get/mget:我们要想下载某个文件可以通过get命令,get可以一次下载一个文件,如果要下载多个文件要使用mget
(5)、put/mput:我们要上传文件要使用put命令,但是要具有上传权限才行,如果要上传多个文件要使用mput
(6)、pwd:pwd可以显示当前路径
(7)、delete/mdelete:delete可以删除相应文件,但是前提是你要有删除权限,要想删除多个文件要使用mdelete
(8)、rmdir/mrmdir:删除目录或多个目录
(9)、stats:显示当前服务器状态
(10)、退出使用quit或bye
b、如果对方不支持匿名访问可以在访问时指明用户名和密码,指明用户名和密码的时候可以使用相应选项
6、lftp:用来取代ftp的命令,他也是一个ftp客户端工具
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
a、常用选项
-p:指定端口,默认是21号端口
-u:指明用户
我们也可以直接输入用户名和密码进行连接
第一个ftp是用户名,第二个ftp是密码
b、对应的操作命令和ftp是一样的
7、lftpget
a、相应选项
-c:继续此前的下载,即端点续传
8、wget命令
The non-interactive network downloader.(非交互式网络下载器)
wget [option]... [URL]...
a、相应选项
-b:在后台执行下载操作,但是这种方式我们不知道进度
-q:表示静默模式下载,即不显示下载进度
-O file:如果不指明下载至何处的话他默认会保存至当前目录下并保留原文件名称,但是我们却可以通过此参数指明下载的文件的保存位置
-c:端点续传
--progress=###: 表示以什么符号显示进度条
--limit-rate=amount:以指定的速率传输文件
四、bash脚本编程
1、程序执行流程
a、顺序执行
b、if,case
c、循环执行:for,while,until
(1)、for循环格式
for VARAIBLE in LIST;do
循环体
done
(2)、while循环
while CONDITION;do
循环体
循环控制变量修正表达式
done
进入条件:CONDITION测试为真
退出条件:CONDITION测试为假
实例:求100以内所有正整数之和
[root@node1 script]# cat sum.sh #!/bin/bash # declare -i sumary=0 declare -i i=1 while [ $i -le 100 ];do sumary=$[ $sumary + $i ] let i++ done echo $sumary [root@node1 script]# bash sum.sh 5050
(3)、until循环,他相当于是在while前面加!的结果
[root@node1 script]# cat sum.sh #!/bin/bash # declare -i sum=0 declare -i i=1 until [ $i -gt 100 ];do let sum+=$i let i++ done echo $sum
[root@node1 script]# bash sum.sh 5050
2、练习:分别使用for,while,until实现
a、分别求100以内所有偶数之和,100以内所有奇数之和
b、创建10个用户,user101~user110;密码同用户名
c、打印九九乘法表
d、打印逆序的九九乘法表
外循环控制乘数,内循环控制被乘数
aaa