软件包管理器的使用
软件的安装
软件包管理器
- Centos,Redhat使用yum,软件格式为rpm
- Ubuntu,Debian使用apt,软件格式为deb
rpm包和rpm命令
- rpm包的格式:软件名称,软件版本,系统版本,平台
- 如何获取到rpm文件?
- 在centos7镜像挂载到linux系统之后 ,会出现dev/sr0
- 我们可以制作iso文件通过dd命令:dd if=/dev/sr0 of=/root/xx.iso
- dev/sr0是一个块设备,我们不能直接的操作,需要进行挂载
- mount /dev/sr0 /mnt
- rpm命令常用的参数
- -q 查询软件包 qa是查询所有的软件包 后面也可以在q后面加软件名
- -i 安装软件包
- -e 卸载软件包
- 通过rpm解决依赖问题十分麻烦,yum很好的解决了这个问题
yum仓库
- 常用的选项
- install 安装软件
- remove 卸载软件
- list grouplist 查看软件包
- update 升级软件包
- 关于软件源的修改可以直接参考国内开源镜像站
- 常用的选项
源码编译安装
- 首先下载软件的源代码
- 然后使用tar进行解压缩
- 进入解压后的目录内
- 执行./configure –prefix=/usr/local/openresty
- 上面的命令是配置下系统的信息比如内核的版本,–prefix选项是指定安装的路径
- make -j2 //用两个逻辑的cpu进行编译
- make install
内核升级
源码编译安装
- 安装依赖包
- yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel
- 下载并解压内核
- tar xvf linux-5.9 -C /usr/src/kernels
- 配置内核编译参数
- 进入内核文件夹
- make menuconfig | allyesconfig | allnoconfig
- 也可以使用系统当前的配置
- cp /boot/congfig-kernel.platform /usr/src/kernels/linux-5.9/.config
- lscpu 查看cpu
- make -j2 all //编译
- make modules_install
- make install //安装内核
rpm安装方式
- uname -r //产看内核版本
- yum install epel-release //安装软件仓库
- yum install kernel - //升级内核版本
- yum update //升级已安装的其他软件包和补丁
grub配置文件
- /etc/default/grup
- /etc/grub.d/
- /boot/grub2/grub.cfg
- grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB_CMDLINE_LINUX
- quiet //静默模式,打印必要的消息,显示的信息较少
- rhgb //引导的时候图形界面
修改默认引导内核
- grub2-editenv list //显示默认引导的内核
- grep ^menu /boot/grub2/grub.cfg //查看已经安装内核的顺序
- grub2-set-default 1 //按照查看的顺序-1进行设置默认引导内核
找回root密码
- 在选择内核界面按e
- 找到linux16那一行 在后面加上rd.break 然后进行启动
- 这时候根目录并没有在根上面,现在的根是一个虚拟的系统
- 执行 mount -o remount,rw /sysroot
- 执行 chroot /sysroot
- echo 123456 | passwd –stdin root
- 关闭selinux(强制访问控制),防止无法进入系统
- vim /etc/selinux/config 将enforcing改为disable
进程管理
进程的概念与查看
- 进程:运行中的程序,程序的开始到终止时可以管理的
- 终止的方式不唯一:正常终止,异常终止
- 正常终止分为从main返回,调用exit
- 异常终止分为调用abort,接受信号
- 查看命令
- ps
- ps -e 查看更多的的进程
- ps -ef 显示uid(有效用户id)显示 PPID 父进程,还会显示命令的完整路径
- pe -e | more 进行分页的显示
- ps -eLf | more 会显示LWP(线程)
- pstree 以树状的形式显示出来
- top 显示当前程序的状态
- 使用数字1可以分开显示cpu的使用情况
- 默认是3秒更新一次 可以按s键然后输入数字进行设置
- ps
- 进程也是树形结构
- 进程和权限密不可分
进程的控制命令
调整优先级
- nice 范围从-20到19,值越小优先级越高,抢占资源越多
- nice -n 10 ./a.sh
- 可以使用top来查看指定的进程 top -p PID
- 如果我们想要不关闭程序来调低优先级可以使用renice
- renice 重新设置优先级
- renice -n PID
- PR的值会跟随NI进行调整
- nice 范围从-20到19,值越小优先级越高,抢占资源越多
进程的作业控制
- 当我们在执行程序运行在前台的时候终端便会被占用 导致不能再执行命令
- 可以在后面加上&符号让程序运行在后台
- 如果我们想把进程调回到前台的时候使用jobs来查看在后台运行的进程的
- 然后使用fg 编号(从jobs获得),将程序调回到前台
- 如果想将前台的程序调到后台 按下CTRL加z ,程序会在后台挂起
- 在后台挂起之后,想要启动的话还是需要使用jobs来查看已经挂起程序的编号
- 使用fg 编号 将程序调到前台,使用bg 编号将程序调到后台
- jobs
- &符号
进程的通信方式—信号
kill -l //查看到支持的信号
SIGINT 也是一个信号 CTRL + C
SIGKILL 立即结束程序,不能被阻塞和处理 kill -9 pid
守护进程和系统日志
使用nohup与&符号配合运行使进程忽略hangup信号
- 使用tail -f /var/log/messages 来跟踪这个文件的变化
- ps -ef | grep tail //对tail进行筛选
- nohup tail -f /var/log/messages & //nohup的作用关掉终端程序依旧会运行,而且会忽略掉输入 ,并把输出追加到nohup.out
守护进程(daemon)和一般进程的区别
守护进程不需要终端 输出会打印在特殊文件中 所占用的目录是根目录
守护进程和普通的进程的对比
- tail -f /var/log/messages //启动进程
- ps -ef | grep tail //查看进程
- nohup tail -f /var/log/messages //可以实现关闭终端运行 父进程会发生变化,会将输出放到 nohup.out文件中
- 守护进程会将输出打印到日志文件下,如果我们再当前的目录下执行tail会占用当前的目录,而daemon会将目录切换为根
- 再linux中有一个特殊的目录 /proc/PID在这里面可以进行查看
- 使用ls -l cwd //可以显示程序当前的位置
- 使用ls -l fd //会显示输入与输出 ,其中0是标准输入,1和2是标准输出
- 下面使用sshd这个deamon进程来进行对比
- ps -ef | grep sshd
- cd /proc/PID
- 使用ls -l cwd 会显示当前程序的目录是/
- 使用ls -l fd 会显示1和2是指向socket(套接字),输出给系统的日志程序