Linux培训(第四期)
本期培训的主要内容有:linux终端常用命令,rpm包管理
1,linux常用命令
1.1,常用信息显示命令
pwd用于屏幕上输出当前的工作目录。
Stat 显示指定文件的相关信息。
uname -a 显示操作系统信息
hostname 显示当前本地主机的命令
dmesg显示系统最后一次启动时内核的内部缓存信息
free显示当前内存和交换分区的使用情况
解释:该主机有2075420KB的物理内存,已有1591152被使用,还有484268是可用的。第二行第5列的buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据,这二者是为了提高IO性能,并由OS管理。
Linux为了提高IO read的性能,总是要多cache一些数据,这也是为什么cache比used大的原因。第三行是从应用的的角度查看系统内存的使用情况,-buffers/cache,表示应用程序认为系统被用掉多少内存;+buffers/cache,表示应用程序认为系统还有多少内存。第四行为交换分区的信息,分别是交换的总量,第一列是使用量,第二列是使用量,第三列是空闲量。
locale显示当前系统的语言设置
cat /etc/issue 显示当前系统的发行版本
date 显示系统当前的日期和时间。-s可以对系统的日期和时间进行设定。
time 计算执行一个进程所需要的时间
cat /proc/cpuinfo 显示CPU的相关信息
lsmod显示目前已经加载的内核模块
set设置用户的环境变量
env查看用户的环境变量
sysctl -a 显示系统所有可以设置的内核参数
ps用于检测进程的工作情况
-
ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
-
ps aux 或lax输出的解释;
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
WCHAN
TTY 终端ID
STAT 进程状态
D Uninterruptible sleep (usually IO)
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数
top动态显示当前系统中消耗资源最多的进程
histtory保留最近执行的命令,默认保留500个,文件保存在家目录下的.history
1.2,常用系统管理命令
kill用于杀死指定的进程。kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比 如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的 作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令 可以直接调用的。
kill -9 123 强行中止一个进程标识号为123的进程
killall httpd 直接使用进程的名字而不是进程标识号
alias用于设定别名,可以用一个自定义的字符串来替代一个完整的命令行。
unalias取消指定的别名。
在命令行上使用alias查看系统中使用的别名。
clear用于清屏并把光标移到左上角。
jobs 显示目前在后台执行的任务列表
& 指定程序放在后台运行,有时用户需要执行程序要花很多时间,如果在前台运行,用户将无法进行其他工作,此时可以利用&命令将程序放到后台运行。
fg 将用户在后台运行的程序移到前台
exit 用于退出并关闭命令行终端
echo 将命令行中的字符串显示在屏幕上,与printf相似。
wc 任何一个文本都由行,单词和字符组成,使用wc命令可以对文本文件的这些基本信息进行统计。
wc -l 显示文件的行数
wc -w 显示文件中包含的单词数
wc -c 显示文件中包含的字符串
chattr 修改ext2和ext3文件系统属性(attribute),使用权限超级用户。
格式 chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
主要参数
-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
=:指定属性。
A:Atime,告诉系统不要修改对这个文件的最后访问时间。
S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结 果写到磁盘。
a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D:检查压缩文件中的错误。
d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
s:Secure Delete,让系统在删除这个文件时,使用填充文件所在的区域。
u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
说明
chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误 的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能 保护/、/dev、/tmp、/var目录。
shutdown把内存中的数据写回硬盘并关闭系统,例如把数据写回硬盘后立即重启#shutdown -r now 再如立即关闭系统,并在关闭前进行数据同步#shutdown -h now
reboot 重新引导系统,该命令不会自动将内存中的数据写回硬盘,因此可能造成数据丢失。
halt关闭系统
sync 用于将内存中的数据写入磁盘,
shutdown -r new = sync + reboot
shutdown -h now = sync + halt
1.3,mount挂载命令
mount
功能:加载指定的文件系统。
语法:mount [-afFhnrvVw] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [加载点]
用法说明:mount可将指定设备中指定的文件系统加载到Linux目录下(也就是装载点)。可将经常使用的设备写入文件/etc/fastab,以使系 统在每次启动时自动加载。mount加载设备的信息记录在/etc/mtab文件中。使用umount命令卸载设备时,记录将被清除。
常用参数和选项:
-a 加载文件/etc/fstab中设置的所有设备。
-f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。
-F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度。
-h 显示在线帮助信息。
-L<标签>加载文件系统标签为<标签>的设备。
-n 不将加载信息记录在/etc/mtab文件中。
-o<选项>指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:
async 以非同步的方式执行文件系统的输入输出动作。
atime 每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为 auto的设备,取消选取为noauto。
defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
dev 可读文件系统上的字符或块设备,取消选项为nodev。
exec 可执行二进制文件,取消选项为noexec。
noatime 每次存取时不更新inode的存取时间。
noauto 无法使用-a参数来加载。
nodev 不读文件系统上的字符或块设备。
noexec 无法执行二进制文件。
nosuid关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。
nouser 使一位用户无法执行加载操作,默认设置。
remount 重新加载设备。通常用于改变设备的设置状态。
ro 以只读模式加载。
rw 以可读写模式加载。
suid启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。
sync 以同步方式执行文件系统的输入输出动作。
user 可以让一般用户加载设备。
-r 以只读方式加载设备。
-t<文件系统类型>指定设备的文件系统类型。常用的选项说明有:
minix Linux最早使用的文件系统。
ext2 Linux目前的常用文件系统。
msdos MS-DOS 的FAT。
vfat Win85/98 的VFAT。
nfs 网络文件系统。
iso9660 CD-ROM光盘的标准文件系统。
ntfs Windows NT的文件系统。
hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。
auto 自动检测文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
-w 以可读写模式加载设备,默认设置。
例子:
查看当前挂载的设备
#mount
挂载光盘
#mount /dev/cdrom /mnt
1.4,常用压缩命令
tar命令
-
[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!例子:
查看tar包内容
#tar -tf test.tar
向包中添加新文件
#tar rvf test.tar file
生成.tar.gz压缩包
#tar zcvf test.tar.gz test
解压.tar.gz压缩包
#tar zxvf test.tar.gz
生成.tar.bz2压缩包
#tar jcvf test.tar.bz2 test
解压.tar.bz2压缩包
#tar jcvf test.tar.bz2
gzip
-
linux gzip 命令详解
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名
各选项的含义:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小
未压缩文件的大小
压缩比
未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字num调整压缩的速度,-1或—fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。例子:
对当前目录下的file1 ,file2进行压缩
#gzip file1 → file1.gz
对file1.gz进行解压
#gunzip file1.gz
1.5系统中的备份命令
dump
格式:
dump [-level#] [-acmMnqSuv] [-A file] [-B records] [-b blocksize]
[-d density] [-D file] [-e inode#,inode#,...] [-E file]
[-f file] [-h level] [-I nr errors] [-j zlevel] [-Q file]
[-s feet] [-T date] [-y] [-z zlevel] filesystem
常用参数
Level:备份级别0-9
级别表示备份所有文件,1-9表示增量备份。
-B:指定用来备份的磁带的长度,以KB为单位(有些磁带不支持以结束标志判断时,就需要使用到此参数
-b:指定块大小,默认为10
-d:指定密度,默认为1600BPI
-D:设定存储数据库的名称和路径,默认是/etc/dumpdates文件
(-e,-E:与备份文件的inodes数有关的参数)
-f:指定备份文件的路径和名称
-u:更新数据库文件/etc/dumpdates
-s:统计备份所需的空间,一般在备份前做,以防磁带或磁盘空间不足
例子
对当前目录下的file1进行备份,备份名字为dumpfile1
# dump -f dumpfile1 file1
dd
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
格式
if=file 输入文件名,缺省为标准输入。
of=file 输出文件名,缺省为标准输出。
bs=bytes 同时设置读写块的大小为bytes
count=blocks 仅拷贝blocks个块,块大小等于ibs指定的字节数。
例子
在root目录下建一个1M的文件testfile
#dd if=/dev/zero of=/root/testfile bs=512 count=2
将磁盘/dev/sdb1全盘备份到/home/image
#dd if=/dev/sdb1 of=/home/image
cpio
cpio与tar命令类似,但cpio不仅可以实现分卷备份,还可以跳过磁带上的坏区。
参数
-o从标准输出设备读入文件名,归档后从标准输出设备输出。
-i用法与-i相反,用于恢复备份。
例子
有文件file1 file2 file3 对这3个文件进行备份。
#ls * | cpio -o > backup_file
恢复以上备份
#cpio -i < backupfile
rsync
当用户在本地客户端某目录内建立、修改、删除目录或文件、修改目录或文件的属性,只要执行相同的shell脚本,rsync就会自动找出有改动或删除的数据,将其传送到服务器上,使服务器端某目录内的数据跟本地客户端某目录内的数据保持一致。
特点
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
3.无须特殊权限即可安装;
4.优化的流程,文件传输效率高;
5.可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。
参数
具体参数查看相关文档
2,linux系统检测和维护
2.1,检测系统资源和性能
proc
proc不是一个真实的文件系统,不占用外存空间,只是以文件的方式为访问Linux内核数据提供接口。用户和应用程序可以通过查看/proc得到系统的运行信息,并可以改变内核的某些参数。由于系统的信息总是动态变化的,所以用户或应用程序读取proc文件时所获得的数据也是瞬时的。许多应用程序依靠proc来访问Linux内核信息。
例子
查看系统内存信息
#cat /proc/meminfo
查看系统版本信息
#cat /porc/version
2.2,查看用户使用系统资源情况
w在多用户环境下,每个用户都可以登录到系统,执行不同的程序。利用w命令可以查看当前有那些用户已经登录。
who 查看最近有那些用户登录
2.3,自动作业程序实现系统的自维护
cron
crond是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
-
文件
含义
/etc/cron.deny
该文件中所列的用户不允许使用Crontab命令
/etc/cron.allow
该文件中所列的用户允许使用Crontab命令
/var/spool/cron/
是所有用户的crontab文件
/var/spool/cron/crontabs
/var/spool/cron/crontabs
Crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:
-
参数名称
含义
示例
-l
显示用户的Crontab文件的内容
crontabl –l
-i
删除用户的Crontab文件前给提示
crontabl -ri
-r
从Crontab目录中删除用户的Crontab文件
crontabl -r
-e
编辑用户的Crontab文件
crontabl -e
用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段, 格式如下:* * * * *
-
段
含义
取值范围
第一段
代表分钟
0—59
第二段
代表小时
0—23
第三段
代表日期
1—31
第四段
代表月份
1—12
第五段
代表星期几,代表星期日
0—6
例子
● 0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache
● 50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
● 50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
● 0 0 1,15 * * fsck /home 每月1号和15号检查/home磁盘
● 1 * * * * /home/bruce/backup 每小时的第一分执行/home/bruce/backup这个文件
● 00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
● 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
at
说明:at可以让使用者指定在TIME这个特定时刻执行某个程序或指令,TIME的格式是HH:MM其中的HH为小时,MM为分钟,甚至你也可以指定am, pm, midnight, noon, teatime(就是下午4点钟)等口语词。如 果想要指定超过一天内的时间,则可以用 MMDDYY或者MM/DD/YY的格式,其中MM是分钟,DD是第几日,YY是指年份。另外,使用者甚至也可以使用像是now + 时间间隔来弹性指定时间,其中的时间间隔可以是minutes, hours, days, weeks。另外,使用者也可指定today或tomorrow来表示今天或明天。当指定了时间并按下enter之后,at会进入交谈模式并要求输入指令或程序,当你输入完后按下ctrl+D即可完成所有动作,至于执行的结果将会寄回你的帐号中。
参数
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at的资料是存放在所谓的queue中,使用者可以同时使用多个queue,而queue的编号为a, b, c... z 以及A, B, ... Z 共52个
-m : 即使程序/指令执行完成后没有输出结果,也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l : 列出所有的指定(使用者也可以直接使用atq而不用at -l
-d : 删除指定(使用者也可以直接使用atrm而不用at -d
-v : 列出所有已经完成但尚未删除的指定
例子
三天后的下午5点锺执行/bin/ls
#at 5pm + 3 days /bin/ls&
三个星期后的下午5点锺执行/bin/ls
#at 5pm + 2 weeks /bin/ls
明天的17:20执行/bin/date
#at 17:20 tomorrow /bin/date
3,linux帮助命令
man 用于查看linux系统手册。
#man ls
info 文档是linux系统提供的另一种格式的帮助信息,与手册相比有更强的交互性,使用info命令可以查看texinfo格式的帮助文档。
#info ls
help shell命令数量众多,当没有独立的帮助文件,help命令提供了对这些shell命令的在线帮助支持。
#ls --help
4,rpm包管理
3.1,rpm包管理介绍
在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM)。
3.2,rpm使用
下面列出几个rpm常用参数,其他参数可以使用man来获得!
rpm
常用参数
查看软件包里有什么内容,系统将会列出这个软件包的详细资料,包括含有多少个文件、各文件名称、文件大小、创建时间、编译日期等信息。
#rpm -qpi ***.rpm
安装rpm包
#rpm -ivh ***.rpm
卸载安装过的rpm包
#rpm -e ***.rpm
查询系统中已经安装的rpm包
#rpm -qa
查询一个已经安装的文件属于哪个软件包
#rpm -qf 文件名
查询一个已安装软件包的信息
#rpm -qa 软件名
查看一下已安装软件所依赖的软件包及文件;
# rpm -qR 软件名