linux笔记5(设备文件、文件系统、计划任务)
设备文件
linux沿袭Unix的风格,将所有设备认成一个文件。设备文件分两种:块设备文件(b),字符设备文件(c); 设备文件一般存放在 /dev 目录下。
常用的块设备文件
-
/dev/hd[a-t]:IDE设备
-
/dev/sd[a-z]:SCSI设备
-
/dev/fd[0-7]:标准软驱
-
/dev/md[0-31]:软raid设备
-
loop[0-15]:本地回访设备
-
ram[0-19]:内存
/dev/null:无限数据接收设备
/dev/zero:无限零资源
/dev/tty[0-31]:虚拟终端
/dev/ttyS[0-9]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
例:
[root@redhat root]# cd /dev
[root@redhat dev]# ls -l > /dev/null //将输出的设备送到null设备文件,功能:所有的输出被null丢弃掉。
[root@redhat dev]# ls -l > /dev/zero //将当前的目录信息输出到zero设备
[root@redhat dev]# echo 123 > /dev/tty2 //将123输出到tty2虚拟终端
常用的符号连接设备文件
/dev/cdrom à /dev/hd[a-t],sd[a-z]
/dev/modem à /dev/ttyS[0-9]
/dev/pilot à /dev/ttyS[0-9]
设备文件的使用
cp /dev/fd0 /dev/fd1
将第一个软驱中的软盘拷入第二个软驱中的软盘
dd if=/dev/hda of=/root/mbr bs=512 count=1
备份第一个硬盘上的mbr为/root目录下mbr文件
dd指令是一个功能强大的copt命令,支持在拷贝文件的过程中转换文件格式,支持指定范围的复制,常用参数:
if=文件名:指定源文件
of=文件名:指定目标文件
bs=xxx:指定块的大小
count=n:指定复制块的数量
[root@redhat dev]# dd if=/etc/passwd of=/root/passwd.bak //把/etc/passwd备份到/root/passwd.bak
3+1 records in
3+1 records out
[root@redhat dev]# dd < /root/install.log > /root/install.log.bp //备份install.log文件
[root@redhat root]# rm -f install.log //删除
[root@redhat root]# dd < install.log.bp > /root/install.log //还原
[root@redhat root]# dd < /dev/sda1 > /opt //备份sda1这个分区
[root@redhat root]# dd < /dev/sda > /root/mbr bs=512 count=1 //备份第一个硬盘的第一个扇区
1+0 records in
1+0 records out
mknod建立设备文件
语法:mknod 文件名文件类型主号从号
主号与从号可以在 /usr/src/linux-2.4/Documentation/devices.txt中找到。
[root@redhat root]# mknod /dev/hda55 b 3 5 //创建一个hda55设备
分区
[root@redhat root]# fdisk -l /dev/sda //列出硬盘sda分区的详细信息
[root@redhat root]# fdisk /dev/sda //操作硬盘sda分区
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):
[root@redhat root]# partprobe //让分区表立刻生效
[root@redhat root]# mkswap /dev/sda6 //(首先用"t"改变分区的id为82,再)把sda的第6个分区格式化成swap分区
[root@redhat root]# free //查看内存
[root@redhat root]# dd < /dev/zero > /tmp/swap bs=4k count=100 //创建一个100M的swap文件
[root@redhat root]# mkswap /tmp/swap //格式化为swap文件格式,并加入到swap分区
[root@redhat root]# free
[root@redhat root]# swapoff /tmp/swap //将这个swap文件脱离swap分区
文件系统
不同的文件系统存放、搜索文件的方式都有不同,Linux支持多种文件系统的读写。linux自身最主要使用的是ext2/ext3文件系统。
ext2/ext3文件系统支持rwx权限及文件属性(attributes); ext2/ext3文件系统采用block+inode方式存放文件;ext2/ext3文件系统上有一块空间被称为超级块(superblock)用于存放文件系统的元数据,诸如卷标名、block数、inode数等等;inode存放文件的元数据,包含文件权限、属性、更改时间等等数据。
例:
[root@redhat root]# ls –il //列出目录下的文件的索引结点号以及详细信息
[root@redhat root]# df //查看硬盘分区信息
[root@redhat root]# dumpe2fs /dev/sda1 //查看第一个分区的超级块信息
ReiserFS文件系统
-
一个非常优秀的文件系统
-
可轻松管理上百G的文件系统
-
先进的日志机制
-
高效的磁盘空间利用
-
独特的搜寻方式
文件属性
-
在ext2/3文件系统中,对每一个文件,还提供额外的属性支持
-
用户可以用lsattr来检查文件的属性
-
系统用户可以用chattr来改变文件的属性。 +号添加、-号去除
例:
[root@redhat root]# chattr +i install.log //给文件设定一个i属性,设定之后,文件无法被删除悠
[root@redhat root]# lsattr install.log
----i-------- install.log
[root@redhat root]# chattr -i install.log //删除文件的i特殊属性
ext3文件系统
-
ext3文件系统即一个添加了日志功能的ext2,与ext2文件系统无缝兼容
-
ext2文件系统可以通过增加日志的方式简单地升级成为ext3文件系统
-
ext3文件系统支持三种日志模式:
规则(默认,公记录元数据);日志化(将数据象元数据一样记录入日志) ;写回(只在fsck时发生)
[root@redhat root]# cat /proc/filesystems //查看当前系统所启用的文件系统
创建文件系统
常用的创建文件系统的工具:
mkfs:可以用于创建各种文件系统,由-t参数指定。
mke2fs:创建ext2/3文件系统,支持指定block大小等功能。
例:
[root@redhat root]# mkfs -t ext2 /dev/sda5 //在sda5分区上创建ext2文件系统
[root@redhat root]# dumpe2fs -h /dev/sda5 //查看sda5的超级块信息
[root@redhat root]# mke2fs -b 2048 /dev/sda5 //给sda5创建ext2文件系统,并指定块大小为2048kB
[root@redhat root]# mke2fs -i 1028 /dev/sda5 //把索引结点的大小设置为1028kB
[root@redhat root]# mke2fs -L data /dev/sda5 //为sda5创建一个名为-L的卷标
[root@redhat root]# mke2fs -j /dev/sda5 //给sda5创建ext3文件系统
[root@redhat root]# mount /dev/sda5 /opt //将sda5挂载到/opt目录下
[root@redhat root]# cd /opt
[root@redhat root]# touch test
[root@redhat root]# ls
[root@redhat root]# umount /opt //卸载/opt目录
mount使用
1.-t 文件系统类型:用于指定挂载文件系统的类型,一般这个参数是必须的。
2. 参数:补允追加的参数
3.ext2文件系统默认采用的参数:rw、suid、dev、exec、auto、nouser、async
例:
[root@redhat root]# mount -o ro /dev/sda5 /opt //挂载sda5到/opt,且只读
[root@redhat root]# mount /dev/cdrom /mnt //挂载光驱
[root@redhat root]# mount /dev/fd0 /mnt //挂载软驱
[root@redhat root]# mount -o loop,ro /var/boot.iso /mnt //挂载ISO镜像
[root@redhat root]# vi /etc/fstab //编辑fstab文件
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/sda2 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
[root@redhat root]# mount //查看当前挂载中的文件系统
[root@redhat root]# cat /etc/mtab //查看当前挂载中的文件系统
[root@redhat root]# cat /proc/mounts //查看当前挂载中的文件系统
[root@redhat root]# e2label /dev/sda5 //查看sda5的卷标
[root@redhat root]# e2label /dev/sda5 data //给sda5创建一个卷标
[root@redhat root]# mount -L data /opt //使用卷标将sda5挂载到/opt上
[root@redhat root]# umount /opt //卸载/opt下的挂载设备
[root@redhat root]# umount /dev/sda5 //卸载sda5设备
文件系统维护
-
fsck/filesystem check:用于检查和修复文件系统。e2fsck:检查与修复ext2文件系统。
-
系统在启动时自动会被检查。
-
tune2fs:更改ext2文件系统属性。
-
resize2fs:更改ext2文件系统的大小。
-
parted:更改多种文件系统大小。
例:
[root@redhat root]# fsck -y /dev/sda6 //检测sda6分区
[root@redhat root]# tune2fs -j /dev/sda5 //把sda5转换为ext3文件系统
[root@redhat root]# rpm -q autofs //查看系统是否安装了autofs(自动挂载套件)
自动挂载
系统通过autofs服务自动挂载文件系统,需要后台的automount进程,autofs服务的开闭由/etc/init.d/autofs脚本控制,主要应用于软驱与光驱等场合,如果该设备一段时间没有被使用,autofs会自动卸载。
[root@redhat root]# cat /etc/auto.misc //查看自动挂载设备
[root@redhat root]# service autofs restart //重启自动挂载服务
[root@redhat root]# cat /etc/auto.master //自动挂载目录集合
真正挂载目录的为 auto.master集合中的目录+auto.misc中的路径。
安装中的窗口切换
在安装过程中,用Alt+Fn键来切换显示窗口:
Alt+F1:安装对话框
Alt+F2:一个bash
Alt+F3:安装日志
Alt+F4:与系统、核心相关的信息
Alt+F5:其他讯息,诸如mke2fs,grub的标准输出
Alt+F7:X图形化显示
-------------------------
[root@redhat root]# sestatus //查看SELinux的状态
[root@redhat root]# vi /etc/sysconfig/selinux //编辑selinux文件
设置:SELINUX=disabled //设置为不可用
Linux的计划任务
at命令:指定一个时间执行一个任务
cron机制:根据一个时间表自动执行任务
anacron机制:在一个指定时间间隔错过后自动执行任务
at命令需要系统后台有一个atd进程
at:安排延时任务
atq:查询当前的等待任务
atrm:删除等待任务
batch:以一个低优先级延时执行任务
例:
[root@redhat root]# ps -ef|grep atd //查看atd是否启动
[root@redhat root]# /etc/init.d/atd restart //重新启动atd服务
[root@redhat root]# chkconfig --level 2345 atd on //设置系统启动运行等级是2345时,启动atd服务
[root@redhat root]# at now +1 min //设置一分钟后的任务
at> echo "hello" > /dev/tty2 //将hello输出到tty2
at> <EOT> //ctrl+D
job 4 at 2011-11-21 13:44
然后在linux系统中按下快捷键Alt+f2,显示第2个终端可以看到:Redhat login: hello 。
[root@redhat root]# at 13:55 //设置13:55后的计划任务
at> echo "this is test" > /root/test.txt //将内容输出到 /root/test.txt
at> <EOT> //ctrl+D
job 5 at 2011-11-21 13:55
[root@redhat root]# cat /root/test.txt
this is test
[root@redhat root]# at 1:00 2011-11-22 //在2011-11-22 1:00自动关闭系统
at> /sbin/shutdown -h now //自动关闭系统
at> <EOT>
job 6 at 2011-11-22 01:00
[root@redhat root]# cd /var/spool/at //进到at目录下
[root@redhat at]# ls
a0000101502a34 a0000201502a37 a0000301502a37 a0000601502cdc spool
[root@redhat at]# cat a0000601502cdc
…………
/sbin/shutdown -h now
[root@redhat at]# atq //查询系统有多少个正在等待被执行的任务
1 2011-11-21 13:40 a root
2 2011-11-21 13:43 a root
3 2011-11-21 13:43 a root
6 2011-11-22 01:00 a root
[root@redhat at]# at now +5 min
at> echo "test" > /dev/tty2
at> <EOT>
job 7 at 2011-11-21 14:16
[root@redhat at]# atq
1 2011-11-21 13:40 a root
2 2011-11-21 13:43 a root
3 2011-11-21 13:43 a root
6 2011-11-22 01:00 a root
7 2011-11-21 14:16 a root
[root@redhat at]# atrm 3 //删除工作号为3的任务
[root@redhat at]#
You have new mail in /var/spool/mail/root
[root@redhat at]# mail
……
& 8
Message 8:
From root@localhost.localdomain Mon Nov 21 14:20:00 2011
Date: Mon, 21 Nov 2011 14:20:00 +0800
From: root <root@localhost.localdomain>
Subject: Output from your job 8
To: root@localhost.localdomain
hi luowei
[root@redhat at]# batch //用于创建大批量的任务
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> echo "hi" > /dev/tty2
at> <EOT>
job 9 at 2011-11-21 14:28
at命令的使用控制
at命令的使用控制文件
/etc/at.allow
/etc/at.deny
基于用户的使用控制
at命令的控制流程
例:
[root@redhat at]# vi /etc/at.deny
test
jack
~
[root@redhat at]# su - jack
[jack@redhat jack]$ at
You do not have permission to use at.
[jack@redhat jack]$