Linux常用命令:

练习3遍以上,命令有点多,建议慢慢查看


一、命令基本格式

1.命令格式:

[root(管理员)@localhost(主机名)~]#(超级用户提示符,普通用户提示符是$) adminis

/root一级目录用pwd print working directory(打印工作目录)查看

/home/user1/二级目录

[root@localhost ~]# cd /usr/local/src/ 切换当前目录

[root@localhost src]#


命令[选项] [参数]  中括号表示可选

注意:个别命令使用时不遵循此歌诗,当有多个选项时,可以写在一起简化选项和完整选项

-a 等于--all

2.查询目录中内容:ls  [选项] [文件或目录]

选项:

      -a  all,显示所有文件,包括隐藏文件,隐藏文件以点"."开头,.bashrc,隐藏是防止误操作

      -l  显示详细信息 longlist长显示

      -d  查看目录属性direct

      -h  人性化显示文件大小human

      -i  显示inode 即i节点

权限:默认10位 - rw- r-- r--

               -文件类型(最主要的三种:-文件 d目录 |软链接文件)

另外四种文件类型:块设备文件,字符设备文件,套接字文件和管道pipe文件

               rw-         r--       r--

               user所有者  g所属组   o其他人

-rw-r--r--. l     root   root   1207 1月  14 18:18  anaconda-ks.cfg

解释:

-rw-r--r--:权限分布 

.:点.可能代表ACL权限  

l:引用次数 ,被调用计数

1207:字符大小,一般是字节 # ls -lh:显示字符后单位,方便阅读h,human人性化

第一个root:所有组,主人 

第二个root:所属组,用户组

1月14 18:18:最后一次修改的时间


      记忆:r读read,w写write,x执行execute


二、文件处理命令

1.目录处理命令

目录同样是文件,目录用于保存文件

(1).建立目录:mkdir  make directories

    mkdir  -p [目录名]

    -p  递归创建,先创建上级目录,再创建第二级目录


[root@localhost ~]# mkdir -p japan/cangls

[root@localhost ~]# ls

anaconda-ks.cfg bols install.log  install.log.syslog  japan

[root@localhost ~]# cd japan/

[root@localhost japan]# ls

cangls

(2).切换所在目录:cd  change directory切换目录

   简化操作:

    cd ~  进入当前用户的家目录

    cd    进入当前用户的家目录  /Ctrl+L xshell清除屏幕

    cd -进入上次目录

    cd .. 进入上一级目录

    cd .  进入当前目录

[root@localhost japan]# cd /root/

[root@localhost ~]# ls    

[root@localhost cangle]# pwd

/root/japan/cangls

[root@localhost cangls]# cd~

[root@localhost ~]# cd japan/cangls

[root@localhost cangls]# cd

[root@localhost ~]# cd -

/root/japan/cangls

[root@localhost cangls]# cd -

root

[root@localhost ~]# cd ..

[root@localhost /]#  root目录


.相对路径:参照当前所在目录,进行查找

如:[root@imooc ~]# cd ../usr/local/src/

[root@localhost /]# cd

[root@localhost ~]# pwd

/root

[root@localhost ~]#cd ../usr/local/src/ 相对路径发生改变

[root@localhost src]# pwd

/usr/local/src

[root@localhost src]# cd ../usr/local/src/ 路径已经改变,,所以提示错误无法确认到src中的usr目录

-bash : cd: ../usr/local/src/:没有那个文件或目录

[root@localhost src]#


.绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置,更加可靠

如:[root@localhost src]# cd /etc/

[root@localhost src]# cd /etc/

[root@localhost etc]# cd /etc/

[root@localhost etc]# cd /etc/

[root@localhost etc]# cd /etc/

[root@localhost etc]# 

命令在任何目录下都可以运行,毕竟是从根目录开始的

如果不记得的目标目录,


[root@localhost src]# cd /(按两下tab)使用tab可以补全命令或者目录


(3).查询所在目录位置:pwd

     .pwd :print working directory打印工作目录,显示当前目录


(4).删除空目录:rmdir

    .rmdir [目录名]:remove empty directories 删除空目录

[root@localhost ~]# ls

anaconda-ks.cfg bols install.log  install.log.syslog  japan

[root@localhost ~]#  rmdir bols/

[root@localhost ~]# ls

anaconda-ks.cfg install.log install.log.syslog  japan

[root@localhost ~]# rmdir japan/

rmdir:删除 "japan/"失败:目录非空

因为japan里面有文件夹cangls,所以非空无法删除


(5).删除文件或目录:rm

     .rm -rf [文件或目录]

     命令英文愿意:remove

选项:

     -r  删除目录,删除目录时不可缺少

     -f  强制

[root@localhost ~]# rm -rf / 删除根目录99%的文件,几乎等于格式化,自杀式命令


(6).复制命令:cp

     cp [选项] [原文件或目录] [目标目录]

     命令英文愿意:copy

选项:

     -r 复制目录

     -p 连带文件属性复制

     -d 若源文件是链接文件,则复制链接属性

     -a 相当于-pdr

[root@localhost ~]# cpanaconda-ks.cfg /tmp/ana(添加这个名字说明复制过去会更改文件名,不填写则复制过去仍是源文件名)

[root@localhost ~]# ls

anaconda-ks.cfg install.log  install.log.syslog japan

[root@localhost ~]# cp japan/ /tmp/ 注意空格一下隔开japan/和/tmp/

cp:略过目录"japan/"  需要添加-r

[root@localhost ~]# cp -r japan/ /tmp/

[root@localhost ~]# ls /tmp/

ana japan yum.log

可以使用ll查看我文件属性和权限分布

[root@localhost ~]# ll 或者写成ls -l

总用量 48

- rw-------. 1 root root 1207  1月  14 20:38 ana

普通复制出来的文件时间新旧文件时间不一致

[root@localhost ~]# cp -pdr

复制出来的文件和源文件属性等全部一致


(7)剪切或改名命令:mv 

    mv [原文件或目录][目标目录]

    英文原意:move

剪切不区分文件和目录,不加-r

[root@localhost ~]# mv japan/ /tmp/japan1  不在同一个目录下是剪切

[root@localhost ~]# ls

anaconda-ks.cfg install.log  install.log.syslog 

[root@localhost ~]# cd /tmp/

[root@localhost tmp]# ls

ana anaconda-ks.cfg japan japan1 yum.log

改名:

[root@localhost tmp]# mv anaconda-ks.cfg longls 在同一个目录下就变成改名了

[root@localhost tmp]# ls

ana japan japan1 longls yum.log


常用一级目录的作用:

  /根目录

  /bin 命令保存目录(普通用户就可以读取的命令)

根目录/下的bin和sbin,usr目录下的bin和sbin四个目录都是用来保存系统命令的,sbin只有root才能使用,普通用户不行sbin,super bin

  /boot 启动目录,启动相关文件

  /dev 设备配置文件保存目录

  /etc 配置文件保存目录

  /root 超级用户的家目录

  /home 普通用户的家目录

  /lib 系统库保存目录,常用函数库

  /mnt 系统挂载文件,cd-rom挂载光盘,usb挂载U盘

  /media 挂载目录

  /misc 空目录,最后三个是用挂载目录

使用规范,约定俗成的目录名

  /proc/直接写入内存

  /sys/

proc和sys目录是不能直接操作的,用来保存内存的过载点

不能用来存放数据,首先内存不能永久保存,而且存放会使系统变慢

  /var 系统相关文档的内容

  /tmp 存放临时文件

总结:可以在家目录root或home,以及tmp目录下随便放内容

      根目录只存放必要的文件


(8).链接命令:ln

      ln -s [原文件][目标文件]

      命令英文原意:link

      功能描述:生成链接文件

      选项: -s 创建软链接 soft

.硬链接特征:

1、拥有相同的i节点和存储block块(一般4KB一个block),可以看做是同一个文件

相当于一个存储文件的不同的获取入口,镜像一样存储double份

2、可以通过i节点识别

3、不能跨分区

4、不能针对目录使用

[root@localhost ~]# ls

anacondalks.cfg cangls install.log  install.log.syslog

[root@localhost ~]# ln /root/anaconda-ks.cfg /tmp/ana.hard

[root@localhost ~]# ll

总用量 44

-w--------. 2 root root 1207  1月  14 18:18 anaconda-ks.cfg

...

[root@localhost ~]# ll /tmp/

总用量 12

-w--------. 2 root root 1207  1月  14 18:18 ana.hard,引用计数都加1

通过任意方式打开修改后,通过另外一个仍可以查看文件,权限一致,其实就是同一个文件

缺陷:不能跨分区,不能针对目录


.软链接特征:

1、类似windows快捷方式,方便打开

2、软链接拥有自己的i节点和block块,但是数据块中保存原文件的文件名和i节点号,并没有实际的文件数据,是原文件的i节点和block块

3、lrwxrwxrwx |软链接

       软链接文件权限都为rwxrwxrwx,查看软链接文件的权限,区别于原文件

4、修改任意文件,另一个都改变

5、删除原文件,软链接不能使用

限制少,而且灵活


[root@localhost ~]# ls

anacondalks.cfg cangls install.log  install.log.syslog

[root@localhost ~]# ln -s /root/anaconda-ks.cfg /tmp/cangls.soft

[root@localhost ~]# ln /root/cangls /tmp/cangls.hard

[root@localhost ~]# ll

总用量 40

-rw-r--r--. 2 root root 1207  1月  14 22:00 cangls

...


[root@localhost ~]# ll -i

262419 -rw-r--r--. 2 root root  0  1月  14 22:00 cangls

262147 -rw-r--r--. 1 root root 24772 1月 14 18:17 install.log

...

[root@localhost ~]# ll -i /tmp/

262418 -rw--------. 1 root root 1216 1月 14 22:36  ana.hard

932110 -rw-r--r---. 1 root root  0  1月  14 22:00 cangls

262419 -rw-r--r--. 2 root root  0  1月  14 22:00 cangls.hard

932061 lrwxrwxrwx. 1 root root  12  1月 14 22:46 cangls.soft -> /root/cangls

其中rwx是指访问软链接的权限,不是原文件的权限,主要分析inode,权限变化,引用计数

...

使用[root@localhost ~]#  cat /tmp/cangls.hard

    [root@localhost ~]#  cat /tmp/cangls.soft

查看文件

做软链接需要使用绝对目标,否则会难以查找,或者在同一目录下修改


三、文件搜索命令:


1.文件搜索命令locate

速度快,但只能按照文件名搜索

格式:locate 文件名,只能通过文件名来搜索

在后台数据库中按文件名搜索,搜索速度快

[root@localhost ~]# locate install,log

/root/install.log

/root/install.log.syslog

是否可以搜索新建文件?

[root@localhost ~]# touch cangls

[root@localhost ~]# locate cangls

[root@localhost ~]#    搜索不到,因为数据库未更新,每天更新一次


/var/lib/mlocate

#locate命令所搜索的后台数据库

[root@localhost ~]# updatedb

[root@localhost ~]# locate cangls

/root/cangls

updatedb

更新数据库

但是,

[root@localhost ~]# touch /tmp/cangls

[root@localhost ~]# updatedb

[root@localhost ~]# locate cangls

/root/cangls

没有出现/tmp/cangls

原因:locate搜索是按照/etc.updatedb.conf配置文件来进行搜索的

PRUNEPATHS = tmp,即tmp不再搜索路径

详情:

 PRUNE_BIND_MOUNTS="yes"

#开启搜索限制,限制全部生效,当是“no”时不搜索

 PRUNEFS =

#搜索时,不搜索的文件系统

 PRUNENAMES =

#搜索时,不搜索的文件类型

 PRUNEPATHS =

#搜索时,不搜索的路径


2.命令搜索命令whereis与which,用来搜索系统命令

 (1).whereis 命令名,只能查系统文件命令

 #搜索命令所在路径及帮助文档所在位置

选项:

   -b :只查找可执行文件

   -m :只查找帮助文件

[root@localhost ~]# whereis ls

ls:/bin/ls /usr/share/man/man1/ls.l.gz .usr/share/man/manlp/ls.lp.gz

后面的是帮助文档的位置

[root@localhost ~]# whoami 查看我是谁

root

[root@localhost ~]# whatis ls 查询这条命令的作用*


ls         (l) - list directory contents显示目录

ls          (lp)  - list directory contents

[root@localhost ~]#  whereis -b ls只看可执行文件位置

ls: /bin/ls

[root@localhost ~]# whereis -m ls只查看帮助文档位置

ls: /usr/share/man/man1/ls.l.gz /usr/share/man/manlp/ls/lp/gz


 (2).which 命令名,除了查看位置,还能查看到别名

 #搜索命令所在路径及别名

[root@localhost ~]# which ls

alias ls='ls --color=auto'颜色显示

          /bin/ls

[root@localhost ~]# whereis cd  #cd属于shell内置命令

cd: /usr/share/man/manl/cd.l.gz /usr/share/man/manlp/cd/lp/gz

[root@localhost ~]# which cd

/usr/bin/which:no cd in()

whereis和which的搜索路径都依赖PATH所定义的路径


补充:

要想直接执行执行脚本或者执行命令,就应该使用绝对路径

 PATH环境变量

  PATH环境变量:定义的是系统搜索命令的路径

[root@localhost ~]# echo $PATH

/usr/lib/qt-3.3/bin:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

用冒号分割的不同命令,说明在这些目录里搜索需要的命令,搜索到后执行,如果搜索完之后都没有找到,就会提示错误

执行个人脚本时,应当记住绝对路径或者存放到PATH所要求的路径之中


3.文件搜索命令find

耗费资源,全部遍历

 find [搜索范围][搜索条件]

   #搜索文件

 (1).find / -name install.log

   #避免大范围搜索,这会耗费系统资源

   #find是在系统当中搜索符合条件的文件名,使用通配符匹配,通配符是完全匹配的

[root@localhost ~]# ls

abc abd install.log install.log.syslog

[root@localhost ~]# find / -name install.log

/root/install.log

你会发现没有install.log.syslog,其实find默认是精确搜索,如果要模糊搜索需要使用到通配符


(2).Linux中的通配符:

 *   匹配任意内容

 ?  匹配任意一个字符

 []  匹配人一个中括号内的字符,像python的range(),从里面选通配符

[root@localhost ~]# ls

abc abd install.log install.log.syslog

[root@localhost ~]# find / -name "install.log*"

/root/install.log  

/root/install.log.syslog


[root@localhost ~]# ls

abc abd install.log install.log.syslog

[root@localhost ~]# find /root -name "ab[cd]"

abc

abd

如果没有ab只是[cd]说明只是搜索c或者d的文件,可以使用*[cd]查找结尾包含c或d的所有文件


(3).另外:

 find /root -iname install.log

 #不区分大小写


 find /root -user root

 #按照所有者搜索

[root@localhost ~]# find /root -user root

/root

...


 find /root -nouser

#查找没有所有者的文件

[root@localhost ~]#  find /root -nouser

没有所有者的文件是垃圾文件,但是有一些特殊文件:

1).系统内核自己产生的没有所有者,如果是在sys,proc中产生

2).外来数据,光盘,u盘,移动数据

 

 a)find /var/log/ -mtime +10

 #查找10天前修改的文件

详细分为三种:

 find /var/log/ -mtime -10    10天内修改的文件

 find /var/log/ -mtime 10     10天当天修改的文件

 find /var/log/ -mtime +10    10天前修改的文件


  atime   文件访问时间 access time访问时间

  ctime   改变文件属性 change time修改时间

  mtime   修改文件内容 modify time修改时间


 b)find   -size 25k

 #查找文件大小是25kB的文件

详细情况也分为三种:

  -25k    小于25kB的文件

  25K     等于25kB的文件

  +25K    大于25kB的文件

注意:k是小写,M是大写,不然报错

find:无效的 -size 类型 "m","K"

不写单位也不行,大小是以块为单位的,一般大小是4kB,如果没单位如25是表示25个扇区(默认是512kB)的容量大小


 d)find   -inum  262421

 #查找i节点是262421的文件

[root@localhost ~]#  ls -i

262242 abc  262421  abd

[root@localhost ~]#  find -inum 262421

/root/abd


 e)find  /etc -size  +20k -a -size -50k

 #查找/etc/目录下,大于20kB且小于50kB的文件

   -a  and 逻辑与,两个条件都需要满足

   -o  or  逻辑或,两个条件只需要满足一个即可


 find /etc -size +20k -a -size -50k -exec ls -lh{}\;

 #find命令执行结果通过-exec让第二个命令ls -lh进行处理

 #查找/etc/目录下,大于20kB并且小于50kB的文件,并显示详细信息

 #-exec/-ok命令{}\;对搜索结果执行操作


4.字符串搜索命令grep

  grep [选项]字符串 文件名

 #在文件当中匹配符合条件的字符串

选项:

  -i 忽略大小写 ignore忽略

  -v 排除指定字符串 即搜索不包含字符串的

[root@localhost ~]# ls

anaconda-ks.cfg  install.log install.log.syslog

[root@localhost ~]# grep "size" anaconda-ks.cfg

#part /boot --fatype=ext4 --size=200

#part /boot --fatype=ext4 --size=2000

#part swap --size=512

#part / --fstype=ext4 --grow --size=200

可以用cat查看文件


5.find命令与grep命令的区别

find命令:在系统当中搜索符合条件的文件名,如果需要匹配,则使用通配符匹配,通配符是完全匹配,就是搜索的结果和条件一模一样


grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配,结果只需要包含搜索条件就可以


四、帮助命令

1.帮助命令man;manual,文档的缩写

  man 命令

  #获取指定命令的帮助

  man ls

  #查看ls的帮助

LS(1(命令级别))     User Commands

NAME 命名

      ls -list directory contents

SYNOPSIS格式

      ls [OPTION]...[FILE]....

可以直接使用/-d查看ls -d的帮助内容,按n往下依次浏览,按Shift+n往上浏览

  man的级别:命令级别

  1: 查看命令的帮助

  2: 查看可悲内核调用的函数的帮助

  3: 查看函数和函数库的帮助

  4: 查看特殊文件的帮助

  5: 查看配置文件的帮助

  6: 查看游戏的帮助

  7: 查看其他杂项的帮助

  8: 查看系统管理员root可用命令的帮助

  9: 查看内核相关文件的帮助

[root@localhost ~]# man -f passwd

passwd             (1)   - update user's authentication token

passwd             (5)   - password file

passwd [sslpasswd] (lssl) -compute password hashes

[root@localhost ~]# whereis passwd

passwd: /usr/bin/passwd(命令位置) /etc/passwd(配置文件位置) /usr/share/man/manl/passwd.1.gz(1等级的帮助文件位置) /usr/share/man5/passwd.5.gz(5等级的帮助文件位置)

  

   man -f 命令

  #查看命令所拥有的那个级别的帮助信息

  相当于

   whatis 命令

举例:

   man -5 passwd

   man -4 null

   man -8 ifconfig

[root@localhost ~]# whatis ls

                  (1) - list directory contents

                  (1p) - list directory contents

[root@localhost ~]#  man -f null

                  (4) - data sink

[root@localhost ~]# man 4 null

有多个等级号就要指定等级号,不然就会从等级号最小的帮助文档开始打开


  man -k 命令

  #查看和命令相关的所有帮助文档

  相当于

  apropos命令

  例如:

  apropos passwd


2.其他帮助命令

  (1).选项帮助命令:

  命令 --help  即man ,--help有部分翻译成中文了

  #获取命令选项的帮助

  例如:

  ls --help

  (2).shell内部命令帮助,shell壳,内核编译器,用户和系统交互的接口

   help shell内部命令

   #获取shell内部命令的帮助

   例如:

   whereis cd

   #确定是否是shell内部命令,可以用whereis查看命令位置,如果只有帮助文档,说明是系统内核自带,如果显示出了执行文件,那么说明是后面添加的命令程序

   help cd

   #获取内部命令帮助,man cd是无法获取内部,然而help无法获得外部命令帮助

  (3).详细命令帮助info

    info 命令

     -回车: 进入子帮助界面(带有*的标记才可以回车)

     -u   : 进入上层界面,up

     -n   : 进入下一个帮助小节

     -p   : 进入上一个帮助小节

     -q   : 退出quit


五、压缩命令

常用压缩格式: .zip  .gz  .bz2  .tar.gz  .tar.bz2

.rar压缩率高


(1).zip格式压缩

     .zip压缩文件名 源文件

     #压缩文件

     .zip -r 压缩文件名 源目录

     #压缩目录

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  longzls

[root@localhost ~]# zip longzls.zip  longzls(空文件,所以压缩0%)

  adding: longzls (stored 0%)

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  longzls  longzls.zip

[root@localhost ~]# 

注意:后缀不能缺少,不是因为系统原因,毕竟linux不区分后缀名,但是为了方便管理员管理不应该缺少

      压缩文件是有个压缩格式的存储,如果源文件比较小,会发现压缩后文件反而更大,但是当你的压缩文件很大的时候,就会有比较好的效果

[root@localhost ~]# mkdir jp

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  jp  longzls  longzls.zip

[root@localhost ~]# touch jp/cangls

[root@localhost ~]# touch jp/longls

[root@localhost ~]# touch jp/bols

[root@localhost ~]# zip -r jp.zip jp

(2).zip格式解压缩

     unzip压缩文件

     #解压缩.zip文件

[root@localhost ~]# unzip jp.zip

(3).gz格式压缩

     1).gzip 源文件

     #压缩为.gz格式的压缩文件,源文件会消失

[root@localhost ~]# ls 

anaconda-ks.cfg  install.log  install.log.syslog  jp  longzls

[root@localhost ~]# gzip longzls

[root@localhost ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  jp  longzls.gz

     2).gzip -c 源文件 > 压缩文件

     #-c是将文件内容输出,通过>指向输出位置,实现压缩,原文件也没有消失,如果没有目标,那么将直接输出到屏幕上

     #压缩为.gz格式,原文件保留

    例如:

     gzip -c cangls > cangls.gz

     3). gzip -r 目录

     #压缩目录下所有的子文件,但是不能压缩目录

补充:.gz可以在windows中解压缩,但是.rar在linux不可以解压缩

[root@localhost ~]# gzip -r jp

[root@localhost ~]# ls

abc  abc.gz  anaconda-ks.cfg  install.log  install.long.syslog  jp  longzls.gz

[root@localhost ~]# cd jp/

[root@localhost jp]# ls

bols.gz  cangls.gz  longls.gz

压缩了目录下的子文件,但是没有压缩目录

(4).gz格式解压缩

      gzip -d 压缩文件

      #解压缩文件

      gunzip 压缩文件

      #解压缩文件

解压缩后,压缩文件会消失,源文件出现,而且解压缩目录时候同样不能缺少-r,即

gunzip -r 压缩文件

(5).bz2格式压缩

      bzip2 源文件

      #压缩为.bz2格式,不保留源文件

      bzip2 -k 源文件 keep保留

      #压缩之后保留源文件

注意:bzip2命令不能压缩目录

(6).bz2格式解压缩

      bzip2 -d 压缩文件

      #解压缩,-k保留压缩文件

      bunzip2 压缩文件

      #解压缩,-k保留压缩文件

注意:bunzip2同样不能解压缩目录

(7).tar.gz,tar.bz2压缩格式

tar打包,先打包,再压缩

      tar -cvf 打包文件名 源文件

      选项:

           -c:打包

           -v:显示过程

           -f:指定打包后的文件名

           -t: test测试,不解压只查看

例如:

      tar -cvf longzls.tar longzls

[root@localhost ~]# tar -cvf jp.tar jp

jp/

jp/bols

jp/longls

jp/cangls

[root@localhost ~]#  gzip jp.tar

[root@localhost ~]# ls

abc  abc.gz  anaconda-ks.cfg  install.log  install.long.syslog  jp jp.tar.gz

通过tar和gzip实现目录的压缩

      tar.gz压缩格式:

其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式

      tar -zcvf 压缩包名 .tar.gz 源文件

     选项:

         -z:压缩为.tar.gz格式

      tar -zxvf 压缩包名 .tar.gz

     选项:

         -x: 解压缩.tar.gz格式


     tar.bz2压缩格式:

同样.tar.bz2格式也是先打包为.tar格式,再压缩为.bz2格式

      tar -jcvf 压缩包名 .tar.bz2 源文件

     选项:

         -j:压缩为.tar.bz2格式

      tar -jxvf 压缩包名 .tar.bz2

     选项:

         -x: 解压缩.tar.bz2格式

注意前后压缩解压缩的格式一致性,不然会出错

(8).tar.gz,tar.bz2解压缩命令

      tar -xvf

选项:

      -x:解包

      -v:显示过程

      -f:指定打包后的文件

      -t: test测试,不解压只查看


六、关机重启命令

1.shutdown命令

[root@localhost ~]# shutdown [选项]时间

选项:

-c:取消前一个关机命令 console取消

-h:关机 

-r:重启 一般远程重启,很少会远程关机,那么开机要亲自去开机


2.其他关机命令:

[root@localhost ~]# halt

[root@localhost ~]# poweroff

[root@localhost ~]# init 0

都不安全,不会保存当前情况

[root@localhost ~]# reboot 相对安全

[root@localhost ~]# init 6

init 0和init 6数字的意思:系统运行级别

 0  关机  不允许设置为系统默认级别

 1  单用户

 2  不完全多用户,不含NFS服务,NFS文件共享符

 3  完全多用户 支持NFS

 4  未分配

 5  图形界面#需要提前安装Xll,大写X表示图形界面

 6  重启  不允许设置为系统默认级别


[root@localhost ~]# cat /etc/inittab

#修改系统默认运行级别

id:3:initdefault:


[root@localhost ~]# runlevel

#查询系统当前运行级别

N 3

N,Null,进入3级别之前是空级别,现在是3级别


[root@localhost ~]# logout

#推出登陆命令

允许同时登陆的用户是有数量要求,所以关机时应该先退出登录


七、挂载命令

挂载相当于windows分配盘符,而盘符在linux称为挂载点

U盘,光盘,移动硬盘重启后都需要重新分配盘符,其他固定盘分配后都会自动挂载


1、查询与自动挂载

[root@localhost ~ ]# mount

#查询系统中已经挂载的设备

[root@localhost ~ ]# mount

/dev/sda5 on / type ext4 (rw)   #第一个分区

proc on /proc type proc (rw)

...

dev:所有特殊设备

sda5中的sd:SCSI硬盘接口200MB/s(服务器接口)、SATA硬盘接口SATA3<500MB/s(串口硬盘)

5:第5个分区


补充:

系统分区:

(1)磁盘分区:磁盘分区是使用分区编辑器(partition editor)分几个逻辑部分。碟片一旦划分成数个分区(partition),不同类的目录和文件可以存储近不同的分区(逻辑上)

分区规则:主分区:最多四个(硬盘结构,每个扇区512字节,446字节记录存储信息,64个字节用于分区表示,每16个字节表示一个分区)

          扩展分区:最多一个

                    主分区和扩展分区最多四个

                    不能写入数据,只能包含逻辑分区

                    

          主分区加扩展分区只能有四个

          逻辑分区

(2)分区设备名与挂载:

给每个分区起一个分区名才能使用,以便于之后为分区分配盘符,分区->格式化->起名->分配盘符

windows:分区->格式化->分配盘符

常见硬件设备文件名:

/:根目录dev硬件文件/描述字符(硬件自行检测)[接口编号]

IDE硬盘: /dev/hd[a-d]如/dev/hda1

SCSi/SATA/USB硬盘:/dev/sd[a-p]如/dev/sda1

光驱:/dev/cdrom或/dev/hdc

软盘:/dev/fd[0-1]

打印机(25针):/dev/lp[0-2]

打印机(USB):/dev/usb/lp[0-15]

鼠标:/dev/mouse

/dev/hda1(IDE硬盘接口<133M/s)CPU32—64位,8*8b

/dev/sda1(SCSI硬盘接口200MB/s、SATA硬盘接口SATA3<500MB/s)

 a)分区表示:

注:1,2,3,4编号只能给主分区或者扩展分区使用,5开始才能给逻辑分区使用

 b)挂载(给分区分配盘符的过程(盘符连接分区的过程)):

拿目录做盘符(盘符是windows概念,用CDEF表示,但是在linux用挂载点表示)

注:必须分区:

    /根分区

    swap分区(交换分区,内存两倍,不超过2GB)同windows虚拟内存

真实机小于4G,SWAP分两倍;SWAP大于4G时,分区使用相同内存就可以

    推荐分区:

    /boot(启动分区,200M)

根目录和子目录依旧分开分区,相互不影响


ext4:文件系统

rw:权限是读写

proc:直接写入内存

proc和sys目录是不能直接操作的,用来保存内存的过载点,系统自动挂载


[root@localhost ~]# mount -a

#依据配置文件/etc/fstab的内容,自动挂载

[root@localhost ~]# vi /etc/fstab 

#自动挂载的分区,将相关的文件写入了ext4,swap目录下了

UUID ... /  ext4  defaults  1  1

UUID ... /boot  ext4  defaults  1  2

UUID ... /home  ext4  defaults  1  2

UUID ... swap ext4  defaults  0  0

注意:光盘,U盘,移动盘载入后设置成了自动挂载,如果取出了的话,系统无法挂载,系统就会出现错误


2、挂载命令格式

 [root@localhost ~]# mount [-t 文件系统][-o 特殊选项] 设备 文件名 挂载点

选项:

 -t 文件系统:假如文件系统类型来制定挂载的类型,可以是ext3,ext4,iso9660等文件系统

 -o 特殊选项:可以指定挂载的额外选项

特殊选项:



[root@localhost ~]# mount -o remount,noexec/home

#重新挂载/boot分区,并使用noexec权限

[root@localhost sh]# cd /home

[root@localhost boot]# vi hello.sh

[root@localhost boot]# chmod 755 hello.sh

[root@localhost boot]# ./hello.sh

[root@localhost boot]# mount -o remount,exec /home

#记得改回来,要不然会影响系统启动的


[root@localhost ~]# cd home

[root@localhost home]# ls

lost+found  user1

[root@localhost home]# vi hello.sh  回车写一段脚本文件

#!/bin/bash 必须带有,表明之后的都是这段脚本,如果不写标记,嵌套时会出现错误

echo."hello,linux!!!"


:wq

保存

[root@localhost home]# chmod 755 hello.sh

[root@localhost home]# ll

-rwxr-xr-x. 1 root  root  36  10月  9 22:31  hello.sh

[root@localhost home]# ./hello.sh  ./代表当前目录下

hello,linux!!!

[root@localhost home]# /home/hello.sh

hello,linux!!!

[root@localhost home]# 


[root@localhost home]# mount -o remount,noexec /home/

[root@localhost home]# ./hello.sh

-bash: ./hello.sh: 权限不够

[root@localhost home]# ll

-rwxr-xr-x. 1 root  root  36  10月  9 22:31  hello.sh

具有执行权限,而且我还是系统管理员,但是仍无法执行文件,原因是因为remount重新挂载后特殊选项选了noexec,不允许执行

[root@localhost home]# whoami

root

[root@localhost home]# mount -o remount,exec /home/

[root@localhost home]# ./hello.sh

hello,linux!!!

[root@localhost home]# 

上面所挂载的home分区并没有按照这个格式:

[root@localhost ~]# mount [-t 文件系统][-o 特殊选项] 设备 文件名 挂载点

进行挂载,是不是应该加上去呢,其实nome分区默认是挂载好了的,本系统默认挂载在sda2

/dev/sda1 on /boot type ext4 (rw)

/dev/sda2 on /home type ext4 (rw)

可以省略,但是挂载光盘之类的都一致要加上去


3、挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom/

#建立挂载点,挂载点只要是空目录就可以


[root@localhost ~]# mount -t iso9660 /dev/cdrom/mnt/cdrom/

#挂载光盘


[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/

#执行挂载命令


[root@localhost ~]#  cd /home

[root@localhost home]# ls /

bin  cgroup  etc  lib  media  mnt  opt  root  selinux  sys  usr

boot  dev  home  lost+found  misc  net  proc  sbin  srv  tmp  var

[root@localhost home]# mkdir /mnt/cdrom

[root@localhost home]# ll /dev/cdrom

lrwxrwxrwx. 1 root root 3 10月  9  18:43 /dev/cdrom -> sr0

#发现其实/dev/cdrom和sr0是软链接,软链接有的需要完全启动后才有效

[root@localhost home]# mount -t(可省略-t) iso9660 /dev/sr0 /mnt/cdrom/

mount:block device /dev/sr0 is write-protected,mounting read-only

[root@localhost home]# cd /mnt/cdrom/

[root@localhost cdrom]# ls


windows可以直接弹出光盘,但是Linux不行,如果要弹出光盘,需要卸载

4、卸载命令


[root@localhost cdrom]# umount /mnt/cdrom/

umount: /mnt/cdrom: device is busy

[root@localhost cdrom]# ls

[root@localhost cdrom]#  pwd

/mnt/cdrom

#因为你在光盘当前目录下,所以你正在使用到cdrom,is busy

[root@localhost cdrom]#  cd

[root@localhost ~]# umount /mnt/cdrom/

[root@localhost ~]# cd /mnt/cdrom/

[root@localhost ~]# ls

[root@localhost ~]# 

#里面的数据就空了

[root@localhost ~]# umount 设备文件名或挂载点

[root@localhost ~]# umount /mnt/cdrom

必须卸载后才能拿出


5、挂载U盘

[root@localhost ~]# cd cdrom

[root@localhost cdrom]# fdisk -l

Device Boot   Start  

...

[root@localhost ~]# fdisk -l

#查看U盘设备文件名

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/

注意:Linux默认是不支持NTFS文件系统的,需要把NTFS驱动重新加载

我们可以安装NTFS-3g,但是都是只读的

vfat:fat32,只能不支持4个G的存储


八、用户登录查看命令

1、查看登录用户信息

 (1).w 用户名

命令输出:

 USER:登陆的用户名;

 TTY:登陆终端;

 FROM:从哪个IP地址登录;

 LOGIN@:登陆时间;

 IDLE:用户闲置时间

 JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间

 PCPU:是指当前进程所占用的时间

 WHAT:当前正在运行的命令

[root@localhost ~]# w

23:57:52 up 4:22, 2users, load average: 0.00, 0.00, 0.00

USER  TTY  FROM           LOGIN@  IDLE  JCPU  PCPU  WHAT

root  tty1 -              18:47   58:15 0.17s 0.17s -bash

root  pts/0 192.168.0.155 22:10   0,00s 0.13s 0.04s w

2users:两个用户

三个0.00:系统在1分钟,5分钟,15分钟下系统平均负载,值越高,系统负载越大

tty1:本机终端

pts/0:第一个远程终端

192.168.0.155:远程终端的IP

IDLE,JCPU,PCPU越大说明耗费资源越多

[root@localhost ~]# 


(2).who 用户名

 命令输出:

  - 用户名

  - 登陆终端

  - 登陆时间(登陆来源IP地址)

[root@localhost ~]# who

root pts/0  2015-07-27  22:10 (192.168.0.155)


(3).last

  last命令默认是读取/var/log/wtmp文件数据

  命令输出:

    - 用户名

    - 登陆终端

    - 登录IP

    - 登陆时间

    - 退出时间(在线时间)

可以看到用户所有的登录信息和重启信息,判断所有用户的登录信息,如果是使用vi命令打开/var/log/wtmp,只能看到乱码,是为了防止被修改。