Linux回顾(第三天)

软件包管理器的使用

软件的安装

  • 软件包管理器
    • 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键然后输入数字进行设置
    • 进程也是树形结构
    • 进程和权限密不可分
  • 进程的控制命令

    • 调整优先级
      • nice 范围从-20到19,值越小优先级越高,抢占资源越多
        • nice -n 10 ./a.sh
        • 可以使用top来查看指定的进程 top -p PID
        • 如果我们想要不关闭程序来调低优先级可以使用renice
      • renice 重新设置优先级
        • renice -n PID
        • PR的值会跟随NI进行调整
    • 进程的作业控制
      • 当我们在执行程序运行在前台的时候终端便会被占用 导致不能再执行命令
      • 可以在后面加上&符号让程序运行在后台
      • 如果我们想把进程调回到前台的时候使用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(套接字),输出给系统的日志程序
你的支持是我最大的动力!
0%