半步多 玄玉的博客

Linux基础知识

2012-03-19
玄玉

RPM管理

RPM(RedHat Package Manager)是一种用于互联网下载包的打包及安装工具,类似于Windows中的setup

它会生成具有.rpm扩展名的文件,它包含在某些Linux分发版中,如OpenLinux、TurboLinux、S.u.S.E等等

这一文件格式名称虽然打了RedHat的标志,但其原始设计理念是开放式的,目前可以算是公认的行业标准了

下面是RPM的一些常用命令

  • rpm -qa:查询已安装的所有rpm软件包
  • rpm -q mysql:查询是否已安装mysql软件包
  • rpm -qi mysql:查询mysql软件包的信息
  • rpm -ql mysql:查询mysql软件包中的文件
  • rpm -qf 文件全路径名:查询文件所属的软件包
  • rpm -qp 包文件名:查询包的信息对这个软件包的介绍
  • rpm -U RPM包全路径名称:升级软件包,比如rpm -U cvs-1.11.2-10.i386.rpm
  • rpm -i RPM包全路径名称:安装软件包到当前系统(i=install安装)
  • rpm -ivh RPM包全路径名称:安装过程中显示提示信息(v=verbose提示,h=hash进度条)
  • rpm -e RPM包的名称:卸载RPM包,比如rpm -e jdk即可卸载JDK

说明:如果其它软件包依赖于所要卸载的软件包,那么卸载时就会产生错误信息

比如rpm -e foo会提示removing these packages would break dependencies:foo is needed by bar-1.0-1

这时我们可以使用--nodeps命令行选项,来让RPM忽略这个错误,并继续卸载,但显然这并不是一个好主意

任务调度

即系统在某个时间执行的特定的命令或程序,系统中的/etc/crontab文件指的就是任务调度文件

通过crontab -l命令可以列出当前的任务调度,crontab -r可以终止任务,而设置任务的具体用法如下

  1. 通过命令crontab -e进入insert模式,然后输入05 * * * * date >> /opt/tomcat8.0.21/logs/mydate
  2. 保存并退出::x,若看到控制台提示crontab: installing new crontab则表示定时调度任务分配完毕,等着执行就行了

上面说的是单任务

要是多任务,要么crontab -e时直接换行写第二个任务

要么先把任务写到一个shell脚本里面,步骤如下

  1. vim mytask.sh
  2. 输入两行任务:date >> /home/mydate22以及cp ../../backup/mpp.zip ./backup
  3. chmod 744 mytask.sh(默认的mytask.sh是没有x权限的,所以这里为该文件设定可执行的权限)
  4. crontab -e
  5. 进入insert模式后,输入0 2 * * * /opt/tomcat8.0.21/logs/mytask.sh命令即可

运行级别

可以使用runlevel命令查询系统的运行级别

而决定着系统的默认运行级别的配置为:/etc/inittab文件中的id:5:initdefault:里面的数字

常见的运行级别有以下几个

  • 0:关机
  • 1:单用户
  • 2:多用户状态没有网络服务
  • 3:多用户状态有网络服务(常用于公司服务器)
  • 4:系统未使用保留给用户
  • 5:图形界面(若系统设置为5号级别,则每次开机都会进入图形界面)
  • 6:系统重启

若不慎将运行级别设为6,这里以RedHat为例,描述一下解决办法

当Linux重启进入GRUB引导界面时,即出现系统选择界面读秒时,按下键盘上的e

然后选中第二行(即kernel /vmlinuz-2.4.20-8 ro root=LABEL=/),再按下键盘的e

再输入1,此时显示的应为grub edit> kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ 1

输入1之后,回车,会返回GRUB引导界面,再按下b键,此时会重新启动并直接进入单用户模式

切记:输入的1,与其前面的LABEL=/之间有一个空格

这里1代表单用户级别,若输入其它级别的数字,是没有意义的,Linux仍会不断重启

因为Linux在启动时,会读取/etc/inittab文件,并按照该文件指定的级别启动Linux

而只有单用户级别,在启动时才不会读取/etc/inittab文件

然后在单用户模式中修改/etc/inittab文件文件,而且该模式下还可以修改用户密码

这有点像是Linux的漏洞,别人辛辛苦苦的工作结果,我们却可以在该模式下改掉它

启动过程

  1. BIOS自检(无论哪个操作系统都会执行该步骤)
  2. 启动GRUB/LILO
  3. 运行Linux内核并检测硬件
  4. 运行系统的第一个进程init
  5. init进程读取系统引导配置文件/ect/inittab中的信息进行初始化
  6. /etc/rc.d/rc.sysinit:系统初始化脚本(这是一个很强大的文件,涉及到Linux内核,如果能读懂这个文件,将会很牛逼)
  7. /ect/rc.d/rcX.d/[KS]* - 根据运行级别X配置服务:终止以’K’开头的服务,启动以’S’开头的服务
  8. /etc/rc.d/rc.local:执行本地特殊配置
  9. 其它特殊服务

进程和线程

进程就是正在执行的程序,每一个进程都会被分配一个ID号

线程属于轻量级的进程,进程有独立的地址空间,线程则没有,Linux中叫fork,Windows中叫Thread

并且线程不能独立存在,它是由进程创建的

以下是几个进程查看的命令

  • kill -9 PID:强制干掉指定PID的进程
  • ps -a:显示当前终端的所有进程信息
  • ps -u:以用户的格式显示进程信息
  • ps -x:显示后台进程运行的参数(PID:进程识别号,TTY:终端机号,TIME:此进程所耗CPU的时间,COMMAND:正在执行的命令或进程名)

Content