软件安装,进程管理,Shell编程

软件安装,进程管理,Shell编程

HallstattAustria_PT-BR9407016733_1920x1080

我们的目标是星辰大海,而非人间烟尘

软件安装

软件包分类⭐️

  1. 源码包
    内核,C语言,易报错,安装时间长、繁琐
    优点:开源,官网可下载

  2. 二进制包(RPM包、deb包、系统默认包)

经过编译的,不能看到源代码
优点:使用简单,安装快

  1. 脚本安装包

源码包再开发,不需要手工安装,类似于Windows中的软件,事先写好安装界面和安装程序——install.sh,出现窗口界面,安装位置、功能配置等,安装简单

RPM包管理-rpm命令管理

rpm –ivh 包全名PACKAGE_FILE

-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
–nodeps 不检测依赖性

RPM包命名原则

httpd-2.2.15-59.el6.centos.1.i686.rpm
httpd :软件包名
2.2.15 :软件版本
59: 软件发布的次数
el6.centos: 适合的Linux平台 rhel6和Centos
i686 或者 x86_64:适合的硬件平台
noarch:适合任何硬件平台
rpm :rpm包扩展名,扩展名便于管理员理解

包全名与包名

包全名PACKAGE_FILE:操作的包是没有安装的软件包时, 使用包全名。而且要注意路径
包名PACKAGE_NAME:操作已经安装的软件包时,使用包名。 是搜索/var/lib/rpm/中的数据库

RPM包升级

# rpm -Uvh 包全名PACKAGE_FILE

-U(upgrade) 升级

卸载

rpm -e 包名 PACKAGE_NAME

-e(erase) 卸载
–nodeps 不检查依赖性

查询包是否安装

image-20211231114836535

查询软件包详细信息

image-20211231114910173

查询包中文件安装位置

image-20211231114953225

查询系统文件属于哪个RPM包

[root@localhost ~]# rpm –qf 系统文件名
选项:
-f 查询系统文件属于哪个软件包(file)

查询软件包的依赖性

[root@localhost ~]# rpm –qR 包名
选项:
-R 查询软件包的依赖性(requires)

RPM包管理-yum在线管理

  1. IP地址配置和网络yum源
    image-20220113233326551

  2. yum命令

查询
[root@localhost yum.repos.d]# yum list
#查询所有可用软件包列表
[root@localhost yum.repos.d]# yum search 关键字
#搜索服务器上所有和关键字相关的包

[root@localhost yum.repos.d]# yum –y install 包名
选项:
install 安装
-y 自动回答yes

升级
[root@localhost yum.repos.d]# yum -y update 包名
选项:
update 升级
-y 自动回答yes

卸载
[root@localhost yum.repos.d]# yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes

  1. 光盘yum源搭建

  2. | RPM****包默认安装路径 | |
    | --------------------------- | -------------------------- |
    | /etc/ | 配置文件安装目录 |
    | /usr/bin/ | 可执行的命令安装目录 |
    | /usr/lib/ | 程序所使用的函数库保存位置 |
    | /usr/share/doc/ | 基本的软件使用手册保存位置 |
    | /usr/share/man/ | 帮助文件保存位置 |

进程管理

进程与程序的区别⭐️

进程由可执行的程序、该程序所需的相关数据集合和进程控制块(PCB)组成。PCB中包含进程标识PID、处理器状态信息、进程控制信息。操作系统通过进程控制块对进程加以管理。

进程与程序的区别:

  1. 进程是程序处理数据的过程,而程序只是一组指令的有序集合。
  2. 进程具有动态性、并发性、独立性和异步性,而程序只是静态的代码不具有这些特性。
  3. 进程与程序并非一一对应的,一个进程可能对应一个程序,也可能多个进程对应一个程序;例如,一个编译程序为多个用户程序编译,构成多个进程。

多任务与进程的类型

  1. Linux系统采用多级反馈队列实现处理机的调度.
  2. 对于实时和系统进程采用优先级和先来先服务相结合的调度算法
  3. 对于普通的用户进程采用优先级与时间片轮转相结合的调度算法

交互进程、批处理进程和监控进程

  1. 交互进程:它是由某种shell程序启动的进程,如执行一个命令。交互进程既可以在前台运行,也可以在后台运行。
  2. 批处理进程:这种进程和终端没有联系,但它是一个进程系列。例如执行一个shell脚本程序。
  3. 监控进程:也称为守护进程,它是在Linux 系统启动时运行的进程,并且运行在后台。

工作管理

把进程放入后台
1、在命令后加&
[root@localhost ~]# tar -zcf etc.tar.gz /etc &

2、按下ctrl+z快捷键
[root@localhost ~]# top(任意命令)
在top(任意)命令执行的过程中,按下ctrl+z快捷键

用jobs来查看

[root@localhost ~]# jobs [-l]
-l: 显示工作的PID

进程的前后台转换

[root@localhost ~]# fg 工作号
注意:工作号不是PID
[root@localhost ~]# fg
#进程在前台恢复运行
[root@localhost ~]# bg
#进程在后台恢复运行

**查看系统中所有进程 **

[root@localhost ~]# ps aux
查看系统中所有进程,使用 BSD 操作系统格式
选项:
a 选择显示当前终端上的所有进程,包括其他用户的进程。
x 显示所有进程,包括没有控制终端的进程。
u 指定输出格式,以用户为主的格式显示进程信息。
[root@localhost ~]# ps -le
查看系统中所有进程,使用 Linux 标准命令格式。
选项:e 显示所有进程 l 以详细格式显示进程的信息

杀死进程

kill命令

[root@localhost ~]# kill –l
#查看可用的进程信号
注意:这里是L,小写的L

[root@localhost ~]# kill [信号] PID
[root@localhost ~]# kill -1 22354

重启进程

[root@localhost ~]# kill -9 22368

强制杀死进程

image-20211231162006916

killall命令

[root@localhost ~]# killall [选项][信号] 进程名
按照进程名杀死进程
选项:
-i: 交互式,询问是否要杀死某个进程
-I: 忽略进程名的大小写

pkill命令

[root@localhost ~]# pkill [选项] [信号] 进程名
按照进程名终止进程
选项:
-t 终端号: 按照终端号踢出用户

系统定时任务

at命令

at 命令是用来执行一次性任务,适合应对突发性和临时性的任务。 守护进程 atd 为 at 命令提供服务。

[root@www /]# at [-ldc]
[root@www /]# at 时间
-l:列出当前用户的at任务列表,也可使用 atq
-d 任务编号:取消一个at 任务,后面跟 at 任务编号,也可使用atrm 任务编号代替
-c 任务编号:显示该任务的实际内存,如:at -c 1 ,显示 1 号任务的详情

Shell编程

Shell是什么

Shell是一个命令行解释器,它为用户提供 了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 启动、挂起、停止甚至是编写一些程序。

Linux支持的Shell : /etc/shells

echo输出命令

[root@localhost ~]# echo [选项] [输出内容]

-e: 支持反斜线控制的字符转换
[root@localhost ~]# echo “Hello World”

image-20211231163050447

[root@localhost ~]# echo -e “ab\bc”

删除左侧字符

[root@localhost ~]# echo -e “a\tb\tc\nd\te\tf”

制表符与换行符

[root@localhost ~]# echo -e \ “\x61\t\x62\t\x63\n\x64\t\x65\t\x66”

按照十六进制 ASCII 码也同样可以输出

历史命令

[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
打开/etc/profile文件查看: HISTSIZE=1000
配置文件生效:重新登录或者source /etc/profile

命令别名

[root@localhost ~]# alias

查询命令别名

[root@localhost ~]# unalias 别名
删除别名

[root@localhost ~]# alias 别名=‘原命令’

设定命令别名

[root@localhost ~]# vi /root/.bashrc
#让别名永久生效

输入输出重定向 (重点)

image-20211231163611077

image-20211231163724466

输入重定向

root@localhost ~]# wc [选项] [文件名]

选项:
-c 统计字节数
-w 统计单词数
-l 统计行数

命令<文件 把文件作为命令的输入
命令<< 标识符

标识符 把标识符之间内容作为命令的输入

管道符

[root@localhost ~]# 命令1 | 命令2

命令 1 的正确输出作为命令 2 的操作对象

grep

grep [选项] "搜索内容" 文件名

-i: 忽略大小写
-n: 输出行号
-v: 反向查找
–color=auto 搜索出的关键字用颜色显示

接收键盘输入

[root@localhost ~]# read [选项] [变量名]

-p “提示信息”:在等待read输入时,输出提示信息
-t 秒数: read命令会一直等待用户输入,使用此选 项可以指定等待时间
-n 字符数: read命令只接受指定的字符数,就会执行
-s: 隐藏输入的数据,适用于机密信息的输入

Shell脚本编程

expr或let

必须使用expr或let命令来指明表达式是一个运算式。expr命令会先求出表达式的值,然后送到标准输出显示。let命令会先求出表达式的值,然后赋值给一个变量,而不显示在标准输出上。

expr <表达式> let <表达式1> [表达式2 ...]

  1. expr 3+2

操作数3、2和运算符+之间没有空格,此时bash不会报错,而是把3+2作为字符串来处理。

  1. expr 3 + 2
    操作数3、2和运算符+之间有空格,此时bash认为是数字运算,返回5送到标准输出

  2. expr 3""2
    使用双引号将操作符
    括起,此时bash返回乘积6

  3. let s=(2+3)4
    s结果为5
    4=20。

条件判断

test cond_expr
或 [ cond_expr ]

这里“真”的数值表示为0,“假”的数值表示为非0,与表达式的真值以及C语言的真值刚好相反。

利用一对中括号时,左右的中括号与表达式之间都必须存在空格。

Shell控制结构

分支结构
循环结构

bash支持的分支结构有if结构和case结构,支持的循环结构有for结构、while结构和until结构。

1. if分支结构
if 条件测试1 ;
then
	command_list_1
[elif 条件测试2 ; 
then
	command_list_2 ]
[else
	command_list_3 ]
fi
2. case分支结构
case expr
模式1 )
command_list_1 
	;;
[ 模式2 )
	command_list_2
	;;
……
* )
	command_list_n
	;; ]
esac

#模式为expr的取值, expr可以是变量、表达式或shell命令等 。
#通常一个模式可以是expr的多种取值,使用或(|)连接。模式中还可以使用通配符,
for循环结构
for var [ in value_list ]
do
	command_list
done
while和until循环结构
while expr
do
	command_list
done
until的格式如下:
until expr
do
	command_list
done
从1加到100
#!/bin/bash #从1加到100
i=1
s=0
while [ $i -le 100 ] 
#如果变量i的值小于等于100,则执行循环
do s=$(( $s+$i ))
i=$(( $i+1 ))
done
echo "The sum is: $s"

99乘法表
#! /bin/sh –
for i in 1 2 3 4 5 6 7 8 9
do
	for j in 1 2 3 4 5 6 7 8 9
	do
		echo – ne 'expr $ i\* $j' "\t"
		if (test $ j -eq 9 ) then
    		echo
		fi
	done
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liknana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值