Linux就该这么学 20181003(第四章Vim/shell/测试条件)

参考链接https://www.linuxprobe.com/

vim文本编辑器
命令模式:控制光标移动,可对文本进行复制,黏贴,删除和查找工作
输入模式:正常的文本录入
末行模式:保存或退出文档,以及设置编辑环境

命令模式常用的一些命令
dd    删除(剪切)光标所在整行
5dd    删除(剪切)从光标处开始的5行
yy    复制光标所在整行
5yy    复制从光标处开始的5行
n    显示搜索命令定位到的下一个字符串
N    显示搜索命令定位到的上一个字符串
u    撤销上一步的操作
p    将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
ggdG    删除全部

魔航模式
命令    作用
:w    保存
:q    退出
:q!    强制退出(放弃对文档的修改内容)
:wq!    强制保存退出
:set nu    显示行号
:set nonu    不显示行号
:命令    执行该命令
:整数    跳转到该行
:s/one/two    将当前光标所在行的第一个one替换成two
:s/one/two/g    将当前光标所在行的所有one替换成two
:%s/one/two/g    将全文中的所有one替换成two
?字符串    在文本中从下至上搜索该字符串
/字符串    在文本中从上至下搜索该字符串
ps: :%s/one/two/g 将全文的所有one替换成two

使用a、i、o三个键从命令模式切换到输入模式。其中,a键与i键分别是在光标后面一位和光标当前位置切换到输入模式,而o键则是在光

标的下面再创建一个空行

修改主机名
vim /etc/hostname
#linuxprobe.com  PS:重启后才生效 hostname

配置网卡信息
在RHEL5,6网卡配置文件都是以eth开头,第一块eth0,第二块eth1
但是在RHEL7中 ,网卡配置文件以ifcfg开始 如ifcfg-eno16777736
现在有一个名为ifcfg-eno16777736网卡设备,将其配置为开机自启动,并设置IP
cd /etc/sysconfig/network-scripts目录中
vim编辑器修改网卡文件 ,写入后保存
设备类型:TYPE=Ethernet

地址分配模式:BOOTPROTO=static

网卡名称:NAME=eno16777736

是否启动:ONBOOT=yes

IP地址:IPADDR=192.168.10.10

子网掩码:NETMASK=255.255.255.0

网关地址:GATEWAY=192.168.10.1

DNS地址:DNS1=192.168.10.1

##
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# vim ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
NAME=eno16777736
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=192.168.10.1

systemctl restart network

配置yum仓库
第1步:进入到/etc/yum.repos.d/目录中(因为该目录存放着Yum软件仓库的配置文件)。

第2步:使用Vim编辑器创建一个名为rhel7.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面加粗的配置参数并

保存退出(不要写后面的中文注释)。

[rhel-media] :Yum软件仓库唯一标识符,避免与其他仓库冲突。

name=linuxprobe:Yum软件仓库的名称描述,易于识别仓库用处。

baseurl=file:///media/cdrom:提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。

enabled=1:设置此源是否可用;1为可用,0为禁用。

gpgcheck=1:设置此源是否校验文件;1为校验,0为不校验。

gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release:若上面参数开启校验,那么请指定公钥文件地址。

第3步:按配置参数的路径挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中。

第4步:使用“yum install httpd -y”命令检查Yum软件仓库是否已经可用。

进入/etc/yum.repos.d目录中后创建Yum配置文件:

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# vim rhel7.repo
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

创建挂载点后进行挂载操作,并设置成开机自动挂载(详见第6章)。尝试使用Yum软件仓库来安装Web服务,出现Complete!则代表配置正

确:

[[email protected] yum.repos.d]# mkdir -p /media/cdrom
[[email protected] yum.repos.d]# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[[email protected] yum.repos.d]# vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
[[email protected] ~]# yum install httpd
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
Dependencies Resolved
================================================================================
 Package Arch Version Repository Size
================================================================================
Installing:
 httpd x86_64 2.4.6-17.el7 rhel 1.2 M
Installing for dependencies:
 apr x86_64 1.4.8-3.el7 rhel 103 k
 apr-util x86_64 1.5.2-6.el7 rhel 92 k
 httpd-tools x86_64 2.4.6-17.el7 rhel 77 k
 mailcap noarch 2.1.41-2.el7 rhel 31 k
Transaction Summary
================================================================================
Install 1 Package (+4 Dependent packages)
Total download size: 1.5 M
Installed size: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
--------------------------------------------------------------------------------
………………省略部分输出信息………………
Complete!

#参数
[[email protected] ~]# ./example.sh
bash: ./Example.sh: Permission denied
[[email protected] ~]# chmod u+x example.sh

$# 表示有多个参数
$* 表示参数分别是
$1 - $9 - ${10} 表示传的参数

测试语句格式:  [ 条件表达式 ]
文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符,
-d    测试文件是否为目录类型
-f    判断是否为一般文件
-e    测试文件是否存在
-r    测试当前用户是否有权限读取
-w    测试当前是否有写入权限
-x    测试当前用户执行权限

[ -d /root/tmp ]
echo $? #如果为真 0    假为1

与    &&
或    ||
非    !
等于    ==

[ $USER != root ]
echo $?

整数比较运算符仅对数字进行操作
-eq    是否等于
-ne    是否不等于
-gt    大于
-lt    小于
-le    小于或等于
-ge    大于或等于

[[email protected] ~]# free -m
            total     used     free     shared     buffers     cached
Mem:        1826      1244     582      9          1           413
-/+ buffers/cache:    830 996
Swap:       2047      0        2047
[[email protected] ~]# free -m | grep Mem:
Mem:        1826      1244     582      9
[[email protected] ~]# free -m | grep Mem: | awk ‘{print $4}‘
582
[[email protected] ~]# FreeMem=`free -m | grep Mem: | awk ‘{print $4}‘`
[[email protected] ~]# echo $FreeMem
[ $FreeMem -lt 1024 ] && echo "Insufficient Memory"

字符串比较用于判断测试字符串是否为空值
=    比较字符串内容是否相同
!=    字符串内容不等于
-z    判断字符串内容是否为空

[ -z $String ]

流程控制语句 if for while case

下面使用单分支的if条件语句来判断/media/cdrom文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建这个目录:

[[email protected] ~]# vim mkcdrom.sh
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi

if
    then
    else
fi

if 条件测试
    then 命令1
elif 条件测试
    then 命令2
fi

for循环条件语句
for 变量名 in 取值列表
do
    命令序列
done

for 用户名 in 列表文件
do
    创建用户并设置密码
done
[[email protected] ~]# vim Example.sh
#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "Already exists"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME , Create success"
else
echo "$UNAME , Create failure"
fi
fi
done

主机在线测试
[[email protected] ~]# vim CheckHosts.sh
#!/bin/bash
HLIST=$(cat ~/ipadds.txt)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -eq 0 ] ; then
echo "Host $IP is On-line."
else
echo "Host $IP is Off-line."
fi
done
[[email protected] ~]# ./CheckHosts.sh
Host 192.168.10.10 is On-line.
Host 192.168.10.11 is Off-line.
Host 192.168.10.12 is Off-line.

while条件循环语句
while    条件测试操作
do
    命令序列
done

case条件测试语句
case 变量值 in
模式1)
    命令1
    ;;
模式2)
    命令2
    ;;
*)
    默认命令序列
esac

read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是 字母。"
;;
[0-9])
echo "您输入的是 数字。"
;;
*)
echo "您输入的是 空格、功能键或其他控制字符。"
esac

计划任务服务程序
定时任务只执行一次 用at
#at -l 查看定时任务列表
#atrm 任务号 删除
[[email protected] ~]# at 23:30
at > systemctl restart httpd
at > 此处请同时按下Ctrl+d来结束编写计划任务
job 3 at Mon Apr 27 23:30:00 2015

crontab
分    时    日    月    星期命令
#crontab -e 编辑
#crontab -l 罗列
字段    说明
分钟    取值为0~59的整数
小时    取值为0~23的任意整数
日期    取值为1~31的任意整数
月份    取值为1~12的任意整数
星期    取值为0~7的任意整数,其中0与7均为星期日
命令    要执行的命令或程序脚本

#假设在每周一、三、五的凌晨3点25分,都需要使用tar命令把某个网站的数据目录进行打包处理
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突

1.Vim编辑模式三种分别是命令模式、末行模式、输入模式
2. $0表示脚本文件名
3.if then elif then else fi
4.for 变量名 in 取值列表 do .. done
5.根据用户输入的不同最好执行case条件语句
6.唱起计划任务使用的服务是 crontab -e 分 时 日 月 星期

vim文本编辑器命令模式:控制光标移动,可对文本进行复制,黏贴,删除和查找工作输入模式:正常的文本录入末行模式:保存或退出文档,以及设置编辑环境
命令模式常用的一些命令dd删除(剪切)光标所在整行5dd删除(剪切)从光标处开始的5行yy复制光标所在整行5yy复制从光标处开始的5行n显示搜索命令定位到的下一个字符串N显示搜索命令定位到的上一个字符串u撤销上一步的操作p将之前删除(dd)或复制(yy)过的数据粘贴到光标后面ggdG删除全部
魔航模式命令作用:w保存:q退出:q!强制退出(放弃对文档的修改内容):wq!强制保存退出:set nu显示行号:set nonu不显示行号:命令执行该命令:整数跳转到该行:s/one/two将当前光标所在行的第一个one替换成two:s/one/two/g将当前光标所在行的所有one替换成two:%s/one/two/g将全文中的所有one替换成two?字符串在文本中从下至上搜索该字符串    /字符串在文本中从上至下搜索该字符串ps: :%s/one/two/g 将全文的所有one替换成two

使用a、i、o三个键从命令模式切换到输入模式。其中,a键与i键分别是在光标后面一位和光标当前位置切换到输入模式,而o键则是在光
标的下面再创建一个空行

修改主机名vim /etc/hostname#linuxprobe.com  PS:重启后才生效 hostname
配置网卡信息在RHEL5,6网卡配置文件都是以eth开头,第一块eth0,第二块eth1但是在RHEL7中 ,网卡配置文件以ifcfg开始 如ifcfg-eno16777736现在有一个名为ifcfg-eno16777736网卡设备,将其配置为开机自启动,并设置IPcd /etc/sysconfig/network-scripts目录中vim编辑器修改网卡文件 ,写入后保存设备类型:TYPE=Ethernet
地址分配模式:BOOTPROTO=static
网卡名称:NAME=eno16777736
是否启动:ONBOOT=yes
IP地址:IPADDR=192.168.10.10
子网掩码:NETMASK=255.255.255.0
网关地址:GATEWAY=192.168.10.1
DNS地址:DNS1=192.168.10.1
##[[email protected] ~]# cd /etc/sysconfig/network-scripts/[[email protected] network-scripts]# vim ifcfg-eno16777736TYPE=EthernetBOOTPROTO=staticNAME=eno16777736ONBOOT=yesIPADDR=192.168.10.10NETMASK=255.255.255.0GATEWAY=192.168.10.1DNS1=192.168.10.1
systemctl restart network
配置yum仓库第1步:进入到/etc/yum.repos.d/目录中(因为该目录存放着Yum软件仓库的配置文件)。
第2步:使用Vim编辑器创建一个名为rhel7.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面加粗的配置参数并
保存退出(不要写后面的中文注释)。
[rhel-media] :Yum软件仓库唯一标识符,避免与其他仓库冲突。
name=linuxprobe:Yum软件仓库的名称描述,易于识别仓库用处。
baseurl=file:///media/cdrom:提供的方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)。
enabled=1:设置此源是否可用;1为可用,0为禁用。
gpgcheck=1:设置此源是否校验文件;1为校验,0为不校验。
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release:若上面参数开启校验,那么请指定公钥文件地址。
第3步:按配置参数的路径挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中。
第4步:使用“yum install httpd -y”命令检查Yum软件仓库是否已经可用。
进入/etc/yum.repos.d目录中后创建Yum配置文件:
[[email protected] ~]# cd /etc/yum.repos.d/[[email protected] yum.repos.d]# vim rhel7.repo[rhel7]name=rhel7baseurl=file:///media/cdromenabled=1gpgcheck=0
创建挂载点后进行挂载操作,并设置成开机自动挂载(详见第6章)。尝试使用Yum软件仓库来安装Web服务,出现Complete!则代表配置正
确:
[[email protected] yum.repos.d]# mkdir -p /media/cdrom[[email protected] yum.repos.d]# mount /dev/cdrom /media/cdrommount: /dev/sr0 is write-protected, mounting read-only[[email protected] yum.repos.d]# vim /etc/fstab/dev/cdrom /media/cdrom iso9660 defaults 0 0[[email protected] ~]# yum install httpdLoaded plugins: langpacks, product-id, subscription-manager………………省略部分输出信息………………Dependencies Resolved================================================================================ Package Arch Version Repository Size================================================================================Installing: httpd x86_64 2.4.6-17.el7 rhel 1.2 MInstalling for dependencies: apr x86_64 1.4.8-3.el7 rhel 103 k apr-util x86_64 1.5.2-6.el7 rhel 92 k httpd-tools x86_64 2.4.6-17.el7 rhel 77 k mailcap noarch 2.1.41-2.el7 rhel 31 kTransaction Summary================================================================================Install 1 Package (+4 Dependent packages)Total download size: 1.5 MInstalled size: 4.3 MIs this ok [y/d/N]: yDownloading packages:--------------------------------------------------------------------------------………………省略部分输出信息………………Complete!
#参数[[email protected] ~]# ./example.shbash: ./Example.sh: Permission denied[[email protected] ~]# chmod u+x example.sh
$# 表示有多个参数$* 表示参数分别是$1 - $9 - ${10} 表示传的参数
测试语句格式:  [ 条件表达式 ]文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符,-d测试文件是否为目录类型-f判断是否为一般文件-e测试文件是否存在-r测试当前用户是否有权限读取-w测试当前是否有写入权限-x测试当前用户执行权限
[ -d /root/tmp ] echo $? #如果为真 0    假为1
与&&或||非!等于==
[ $USER != root ] echo $?

整数比较运算符仅对数字进行操作-eq是否等于-ne是否不等于-gt大于-lt小于-le小于或等于-ge大于或等于
[[email protected] ~]# free -m            total     used     free     shared     buffers     cachedMem:        1826      1244     582      9          1           413-/+ buffers/cache:    830 996Swap:       2047      0        2047[[email protected] ~]# free -m | grep Mem:Mem:        1826      1244     582      9 [[email protected] ~]# free -m | grep Mem: | awk ‘{print $4}‘582[[email protected] ~]# FreeMem=`free -m | grep Mem: | awk ‘{print $4}‘`[[email protected] ~]# echo $FreeMem [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
字符串比较用于判断测试字符串是否为空值=比较字符串内容是否相同!=字符串内容不等于-z判断字符串内容是否为空
[ -z $String ]
流程控制语句 if for while case
下面使用单分支的if条件语句来判断/media/cdrom文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建这个目录:
[[email protected] ~]# vim mkcdrom.sh#!/bin/bashDIR="/media/cdrom"if [ ! -e $DIR ]thenmkdir -p $DIRfi
ifthenelsefi

if 条件测试then 命令1elif 条件测试then 命令2fi

for循环条件语句for 变量名 in 取值列表do命令序列done
for 用户名 in 列表文件do创建用户并设置密码done[[email protected] ~]# vim Example.sh#!/bin/bashread -p "Enter The Users Password : " PASSWDfor UNAME in `cat users.txt`doid $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho "Already exists"elseuseradd $UNAME &> /dev/nullecho "$PASSWD" | passwd --stdin $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho "$UNAME , Create success"elseecho "$UNAME , Create failure"fifidone
主机在线测试[[email protected] ~]# vim CheckHosts.sh#!/bin/bashHLIST=$(cat ~/ipadds.txt)for IP in $HLISTdoping -c 3 -i 0.2 -W 3 $IP &> /dev/nullif [ $? -eq 0 ] ; thenecho "Host $IP is On-line."elseecho "Host $IP is Off-line."fidone[[email protected] ~]# ./CheckHosts.shHost 192.168.10.10 is On-line.Host 192.168.10.11 is Off-line.Host 192.168.10.12 is Off-line.

while条件循环语句while条件测试操作do命令序列done
case条件测试语句case 变量值 in模式1)命令1;;模式2)命令2;;*)默认命令序列esac
read -p "请输入一个字符,并按Enter键确认:" KEYcase "$KEY" in[a-z]|[A-Z])echo "您输入的是 字母。";;[0-9])echo "您输入的是 数字。";;*)echo "您输入的是 空格、功能键或其他控制字符。"esac
计划任务服务程序定时任务只执行一次 用at#at -l 查看定时任务列表#atrm 任务号 删除[[email protected] ~]# at 23:30at > systemctl restart httpdat > 此处请同时按下Ctrl+d来结束编写计划任务job 3 at Mon Apr 27 23:30:00 2015

crontab分时日月星期命令#crontab -e 编辑#crontab -l 罗列字段说明分钟取值为0~59的整数小时取值为0~23的任意整数日期取值为1~31的任意整数月份取值为1~12的任意整数星期取值为0~7的任意整数,其中0与7均为星期日命令要执行的命令或程序脚本
#假设在每周一、三、五的凌晨3点25分,都需要使用tar命令把某个网站的数据目录进行打包处理25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突
1.Vim编辑模式三种分别是命令模式、末行模式、输入模式2. $0表示脚本文件名3.if then elif then else fi4.for 变量名 in 取值列表 do .. done5.根据用户输入的不同最好执行case条件语句6.唱起计划任务使用的服务是 crontab -e 分 时 日 月 星期

原文地址:https://www.cnblogs.com/Liang-jc/p/9741356.html

时间: 2024-10-03 02:23:20

Linux就该这么学 20181003(第四章Vim/shell/测试条件)的相关文章

Linux就该这么学 20181003(第三章管道符)

参考链接https://www.linuxprobe.com/ 20181003 输入输出重定向 标准输入重定向STDIN 文件描述符0 默认键盘输入 标准输出重定向STOUT 文件描述符1 默认输出到屏幕 错误输出重定向STDERR 文件描述符2 默认输出屏幕 重定向中用到的符号以及作用 命令 < 文件 将文件作为命令的标准输入 命令 << 分隔符 从标准输入中读入,直到遇见分界符才停止 命令 <文件1 >文件2 将文件1作为命令的标准输入将标准输出到文件2 对于输出重定向

Linux就该这么学 20181003(第六章磁盘管理)

参考链接https://www.linuxprobe.com/ /boot 开机锁需要文件-内核.开机菜单以及所需配置文件 /dev 以文件形式存放的任何设备与接口 /etc 配置文件 /home 用户主目录 /bin 存放单用户模式下还可以操作的命令 /lib 开机用到的函数库,以及/bin与/sbin的命令要调用的函数 /sbin 开机过程中需要的命令 /media 用于挂载设备文件的目录 /opt 放置第三方的软件 /root 系统管理员家目录 /srv 一些网络服务的数据文件目录 /tm

《Linux内核设计与实现》——第四章 进程调度

<Linux内核设计与实现>——第四章 进程调度 4.1多任务 多任务操作系统:同时并发地交互执行多个进程的操作系统 多任务操作系统会使多个进程处于堵塞或者睡眠状态.这些任务尽管位于内存,但是并不处于可运行状态.这些进程利用内核堵塞自己,直到某一事件发生. 多任务系统可以划分为两类:非抢占式和抢占式. 抢占:强制挂起. 时间片:分配给每个可运行进程的处理器时间段. 4.3策略 策略决定调度程序在何时让什么程序运行. 4.3.1   I/O消耗型和处理器消耗型的进程 I/O消耗型:进程的大部分时

Linux 第四天 vim shell

案例一:配置主机名称:Vim /etc/hostname 部署网卡配置:Rhel 5/6 网卡配置文前缀eth0 eth1RHEL 7 ifcfg-ens1 设备类型:TYPE=Ethernet地址分配模式:BOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERR

跟着老刘学《Linux就该这么学》第五天--编写Shell脚本

编写Shell脚本可以将Shell终端解释器当作人与计算机硬件之间的"翻译官",它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环.分支等高级编程语言才有的控制结构特性.要想正确使用Shell中的这些功能特性,准确下达命令尤为重要.Shell脚本命令的工作方式有两种:交互式和批处理. 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命

《Linux内核设计与实现》第四章学习笔记

第四章 进程调度 [学习时间:1小时45分 撰写博客时间:2小时10分钟] [学习内容:Linux的进程调度实现.抢占和上下文切换.与调度相关的系统调用] 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉

《Linux内核设计与实现》第四章读书笔记

第四章 进程调度 第4章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行,这些进程在等待运行,在一组处于可运行状态的进

Linux就该这么学_第1章

RPM(红帽软件包管理器),本质是为了降低软件安装难度,将源代码为安装规则打包在一起,让系统自动识别安装源代码.虽然RPM已经能够简化软件的安装难度,但是大型软件的安装存在较复杂的依赖关系,Yum软件仓库把大量常用的软件打包在一起,进一步降低软件安装难度,通过解决软件包的依赖关系,自动云安装软件来实现. Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令"告诉"终端,它就会调用相应的程序服务去完成某些工作.现在包括红帽系统在内的许多主流Linux系统默认使

学习《Linux就该这么学》第四天

Vim之所以能得到广大厂商与用户的认可,原因在于Vim编辑器中设置了三种模式-命令模式.末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手.要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法. 命令模式:控制光标移动,可对文本进行复制.粘贴.删除和查找等工作. 输入模式:正常的文本录入. 末行模式:保存或退出文档,以及设置编辑环境. 在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再