可以列出行号的参数
cat :
-A 显示特殊字符
-b 针对非空白行列出行号
-n 打印出行号,包括空白行
nl:
-b:指定列出行号方式
-b a :列出行号,不论是否为空行
-b t :列出行号,不包括空行
-n:列出行号的格式
-n ln 行号在屏幕最左方显示
-n rn 行号在自己字段最右边显示k
关机有关的命令
#关机前先了解目前主机的使用状况
who #当前登录用户
netstat -a #查看网络联机状态
ps -aux #查看后台执行的程序
#关机命令
#数据在计算机中的运行模式是所有的数据都得要被读入内存后才能被cpu处理,但是数据有经常需要由内存写回硬盘中,由于硬盘的
#速度太慢,为了加快数据的读取速度,在默认情况下,某些已经被加载内存中的数据将不会被直接写入内存,而是先暂存在内存中
#sync命令可以强制将内存中的数据写入硬盘
shutdown [-hrkfF] 时间 [警告消息](时间参数必须,警告消息可选)
-h :将系统服务停掉后,立即关机
-r :系统服务停掉后重启
-k :不是真的关机,只是发送警告消息出去
-f :关机并开机之后,强制掠过fcsk磁盘检查
-F :重启之后,强制进行fcsk磁盘检查
shutdown -h now 立即关机
#shutdown会可以依据目前已经启动的服务来逐次关闭各个服务后关机,halt直接进行硬件关机
init 0 关机
init 3 重启进入纯命令行模式
init 5 含有图形界面
init 6 重启
linux文件权限与目录配置
ls 命令
-a 全部文件,包括隐藏文件
-A 全部文件,包括隐藏文件,但不包括.与..这两个
-d 仅列出目录本身 #ls -ld /home/user/
-h 易读方式显示文件容量大小
-i 显示文件的inode号码
-n 列出UID与GID 而非用户与用户组的名称
-R 连同子目录一起列出来,子目录的子目录,所有的
-t 按时间排序
chxxx -R filename/dirname
chgrp 改变文件所属组
chown 改变文件所有者
chmod 改变文件权限
chmod 【ugoa】【+-=】【rwx】filename/dirname
-R 级联更改
#要开方目录给任何人浏览时,应该至少给予rx权限
linux文件与目录管理
echo $PWD #显示当前工作目录
pwd
mkdir #新建目录
-p 递归创建目录
rmdir 删除目录
cp
-a 完整赋值源文件权限信息
-f 强制
-i 进行硬连接创建
-r 递归持续复制
-u 若目的文件比源文件旧才会更新目的文件
rm
-f 强制删除
-r 递归删除
mv
-f 目标文件存在时,强制覆盖
touch 创建新文件
#文件查看
cat
-A 显示特殊字符
-b 列出行号
-n 行号,包括空白行
tac
nl:
-b:指定列出行号方式
-b a :列出行号,不论是否为空行
-b t :列出行号,不包括空行
-n:列出行号的格式
-n ln 行号在屏幕最左方显示
-n rn 行号在自己字段最右边显示k
more
less
head -n 20 查看前20行
tail
-n 20 最后20行
-f 持续检测文件变化
#查看文件类型(ASCII文本,或是data,binary)
file ~/.bashre
#文件隐藏属性
chattr 【+-=】【ai】filename/dirname
-a 只能增加数据,不能删除和修改
-i 什么都不能做
lsattr 【-adR】filename/dirname
-a 包括隐藏文件
-d 后接目录的话,仅列出目录本身属性
-R 包括子目录属性
#注意:文件的隐藏属性用ls等命令不能显示,只能用lsattr显示
#文件特殊权限SUID SGID SBIT
SUID
#当 s 标志出现在文件所有者的x权限上面,则这个文件具有SUID特殊权限
#SUID 只能用在二进制程序上面,不能用在shell脚本中
#文件具有SUID权限时,当用户执行此二进制程序时,在执行过程中暂时具有程序所有者权限
SGID
#当 s 标志出现在目录用户组的x上面时,用户在此目录下创建的新文件的用户组与此目录用户组相同
SBIT
#仅对目录有效
#用户在此目录下创建文件或文件夹时,仅有自己与root能够删除该文件
#example
$cd /tmp
$touch test
$chmod 4755 test; ls -l test #加入SUID权限
-rwsr-xr-x. 1 lijian lijian 0 Dec 19 11:30 test
$chmod 6755 test; ls -l test #加入具有SUID/SGID权限
-rwsr-sr-x. 1 lijian lijian 0 Dec 19 11:30 test
$chmod 1755 test; ls -l test #加入具有SBIT权限
-rwxr-xr-t. 1 lijian lijian 0 Dec 19 11:30 test
linux 文件查询相关
#命令与文件的查询
#根据PATH路径查执行文件
which 根据PATH这个环境变量所规范的路径去查询执行文件的文件名,不同用户的PATH设置路径不同,查询结果不同
$which ls
alias ls='ls --color=auto'
/bin/ls
#根据系统数据库文件查询
whereis
locate
update #更新系统数据库文件
#直接查询硬盘的文件系统
find
#时间查询
$find /etc/ -mtime 4 #4天之前的那一天被更改过的文件
$find /etc/ -mtime +4 #所有4天之前被更改过的文件
$find /etc/ -newer file #file是一个存在的文件,列出/etc/目录下比file还要新的文件名
#mtime 内容更改时间
#ctime 状态更改时间
#atime 访问读取时间
#用户或用户组查询
$find /home/ -user username #查找/home/下面属于username的文件
$find /home/ -group groupname #查找。。。。。。。。。。。。。。
$find / nouser #查找系统中不属于任何人的文件
#文件权限与名称查询
#名字
$find /etc/ -name passwd
#文件大小
$find /etc/ -size +40k #比40还要大的文件
$find /etc/ -size 40k
$find /etc/ -type 【fbcdlsp】 #查找的文件类型为type的
f 一般正规文件
d目录文件
b c 设备文件
s socket
l 链接文件
p FIFO文件
#文件权限
$find /etc/ -perm 4755 #权限刚好等于4755的文件
$find /var/ -perm +7000 #包含7000中任一权限的文件,即4755文件也会被找到,因为它包含了s权限
#example
$ sudo find /usr/ -perm +7000 | xargs ls -l
-rwsr-xr-x. 1 root root 54240 Jan 30 2012 /usr/bin/at
-rwsr-xr-x. 1 root root 66352 Dec 8 2011 /usr/bin/chage
-rws--x--x. 1 root root 20184 Feb 22 2013 /usr/bin/chfn
-rws--x--x. 1 root root 20056 Feb 22 2013 /usr/bin/chsh
-rwsr-xr-x. 1 root root 47520 Jul 19 2011 /usr/bin/crontab
-rwxr-xr-t. 1 root root 11143104 Mar 1 2012 /usr/bin/emacs-23.1
-rwsr-xr-x. 1 root root 224912 Feb 22 2013 /usr/libexec/openssh/ssh-keysign
$find /var/ -perm -0744 #必须包含0744所有权限
linux inode block && 管理命令
#磁盘与文件系统相关知识
1.SATA/USB/SCSI 等磁盘接口都是使用SCSI模块来驱动的,因此这些设备的磁盘设备文件名都是/dev/sd[a-p]格式
设备文件名是根据linux内核检测到磁盘的顺序来决定的
2.扇区:
磁盘的每个扇区都是512bytes大小,第一个扇区主要记录了两个重要的信息,分别是MBR:安装引导加载程序,446bytes 分区表(partiton table):记录整块硬盘分区的状态,64bytes
扇区是最小的物理存储单位,将扇区组成一个圆,就是柱面,柱面是分区的最小单位
3.分区:
分区只是针对那个64bytes的分区表进行设置而已,默认分区表仅能写入四组分区信息
所谓的磁盘分区是告诉操作系统“我这块磁盘在此分区可以访问的区域是由A柱面到B柱面”
磁盘分区也即指定分区的起始柱面号
4.分区的作用:分区可以将数据集中在某个柱面的区段,例如某分区位与柱面号码1-100号,当有数据要读取该分区时,磁盘只会搜索这1-100号,有助于数据读取的速度与性能
5.linux内的所有数据都是以文件形态呈现的,整个linux最重要的就是目录树结构,所有的文件都是由根目录/衍生来的
6.挂载:
整个linux系统使用的是目录树结构,我们的文件数据是放在磁盘分区当中的,要结合目录树的架构与磁盘分区内的数据,就用到了挂载
所谓的挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,进入该目录就可以读取该分区的数据,这个进入点成为挂载点,根目录一定需要挂载到某个分区
7.inode与block
当在linux下新建一个目录时,系统会分配一个inode与至少一块block给该目录,其中inode记录该目录的相关权限与属性,还有分配到的那块block号码;block则是记录在这个目录下的文件名与其占用的inode号码数据
新建一个一般文件时,系统会分配一个inode与相对与该文件大小的block给该文件,inode本身并不记录文件名,文件名的记录实在目录的block中,因此对文件的新增/删除/重名名与其所在目录的w权限有关
当我们要读取某个文件时,一定会经过目录的inode与block,从目录的block中找到文件名对应的inode号码,然后通过这个inode号码,读取到文件的block内的数据
一句话是:目录的block记录在这个目录下文件名与该文件名占用的inode号码,文件的inode记录该文件的属性权限和文件内容所在的block号码
dumpefs /dev/sda1
#查看指定分区的superblock信息,一个文件系统只有一个superblock
#列出所有已挂载的文件系统
df -i
#不用硬盘容量,显示该文件系统inode的总量与剩余量
df -h /etc
#df自动分析该文件或目录所在的分区,并将该分区的容量显示出来
#主要读取的数据都是针对整个文件系统,读取的范围主要是superblock内的信息
#df没有参数,默认会将系统内所有的文件系统(不含特殊内存内的文件系统与swap)都以1kb容量列出来
#eg:
$df -a
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 38499988 5186796 31357508 15% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
tmpfs 1027308 84 1027224 1% /dev/shm
/dev/sda1 198337 32450 155647 18% /boot
/dev/sda2 40316280 180104 38088176 1% /date
/dev/sda3 20158332 784224 18350108 5% /home
none 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
#/proc 是系统所需要加载的系统数据,而且是挂载在内存当中,所以不占用任何磁盘空间
#/dev/shm 是利用内存虚拟出来的磁盘空间,因此这个目录下的数据访问速度很快
ln
#默认是创建硬链接
-s 软链接,快捷方式
linux磁盘分区格式化挂载命令
#磁盘分区 格式化
fdisk /dev/sda
-l #输出后面接的设备/dev/sda所有的分区内容,若仅有fdisk -l时,会把整个系统内能够找到的磁盘设备都列出来
#df 是列出文件系统的使用情况,当前挂载的分区即主分区和逻辑分区
#fdisk 会列出所有的分区,主分区,逻辑分区,扩展分区
mkfs -t ext4 /dev/sda6
#格式化sda6分区
mke2fs
-b #设定每个block的大小
-i #每个inode的容量
#磁盘检验
fsck [-t 文件系统] [-ACay] 设备名称
-A:依据/etc/fstab的内容,将需要的设备扫描一次
-a:自动修复有问题的扇区
-C:在检查的过程中用一个直方图显示进度
#fsck检查的设备不能挂载到系统上!!!!!
#ext2/ext3文件系统的最顶层(就是挂载点那个目录下)会存在一个lost+found目录,fsck检查的结果数据会被放在这里
各种设备的挂载
$mount
#单纯输入mount会显示目前已经挂载的信息,加上-l会增列label名称
-a #根据配置文件/etc/fstab的数据讲所有未挂载的设备挂载
-o #后面接一些额外的参数
ro,rw 挂载设备为只读,可写
默认为:rw sync(同步写入) suid dev exec auto nouser
remount #重新挂载,系统出错,或更新参数时常用
$unmount
-f #强制卸载,用在网络文件系统(nfs)无法读取到的情况下
#挂载etx2/ext3文件系统
$mount /dev/sda5 /mnt/sda6
$df -h
#查看刚挂载的信息
#挂载CD/DVD光盘
$mount /dev/cdrom /media/cdrom/
#系统会自己测试挂载
#挂载U盘
1.找出U盘设备文件名称
$fdisk -l
2.建立挂载目录
$mkdir /mnt/flash
3.挂载
$mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash
$df -h
#重新挂载根目录
mount -o remount,rw,auto /
#将根目录重新挂载,并加入参数rw与auto
#当你进入但用户维护模式时,根目录会被系统挂载为只读,这个时候就可以用这个命令重新挂载
#将某个目录暂时挂载到另一个目录
$mkdir /mnt/home
$mount --bind /home /mnt/home/
#eg
$ls -dli /home/ /mnt/home/
393217 drwxr-xr-x. 3 root root 4096 12月 23 13:56 /home/
393217 drwxr-xr-x. 3 root root 4096 12月 23 13:56 /mnt/home/
#两者链接到同一个inode,所以进入/mnt/home就是进入/home
#使用label name进行挂载
1.
$e2label /dev/sda6 "label name"
#给设备/dev/sda6 添加
2.
$dumpe2fs -h /dev/sda6
#找出/dev/sda6的label名称
3.
$mount -L "label name" /mnt/sda6
-L 用设备label名称挂载
#光盘镜像文件的挂载
1.
$mkdir /mnt/centos_dvd
2.
$mount -o loop /home/centos6.4_x86_64.iso /mnt/centos_dvd
#可以读取光盘内容
#新建大文件以制作loop设备文件
$dd if=/dev/zero of=/home/loopdev bs=1M count=512
#1.创建一个512M的空文件
$mkfs -t ext3 /home/loopdev
#2.格式化
$mount -o loop /home/loopdev /media/cdrom/
3.挂载
#这种方法可以在原本分区不变的情况下制作出一个新的分区