第五章 信息显示与搜索文件命令
5.1 uname
显示系统信息
uname -a 可以看到更多的信息,显示所有
Linux oldbody 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Linux 代表内核名称 oldboy代表主机名 2.6.32-573.el6.x86_64 内核发行版本号
1 SMP Thu Jul 23 15:44:03 UTC 2015 内核的版本号
cat /etc/redhat-release 可以看到版本
CentOS release 6.7 (Final)
uname -r可以看到内核
2.6.32-573.el6.x86_64
uname -n 显示主机名 或者hostname 或者cat /etc/sysconfig/network
[root@oldbody ~]# hostname oldbody [root@oldbody ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=oldbody [root@oldbody ~]#
5.2 hostname
显示或设置系统的主机名
参数 -I 显示主机的所有IP地址 速度较快 不依赖与DNS解析
修改主机名:hostname liangli 退出后登录才能生效 但是服务器重启后,又恢复到了oldboy了,因为配置文件没有修改 命令行和配置文件都需要修改才能永久生效
sed -i ‘s#HOSTNAME=oldbody#HOSTNAME=liangli#g’ >/etc/sysconfig/network
注意:在CentOS7中 修改主机名的配置文件换成了/etc/hostname
文件系统:组织管理文件的一种机制,对磁盘一格式化,就是创建文件系统了
5.3 dmesg
系统启动异常诊断
内核环形缓冲区的内容同时保存在/var/log目录中,即名称dmesg的文件里
[root@oldbody ~]# ll -h /var/log/dmesg -rw-r--r-- 1 root root 84K 10月 8 19:45 /var/log/dmesg
5.4 stat
显示文件或文件系统状态
参数 -c 使用指定输出格式代替默认值
[root@oldbody test]# stat /etc/hosts File: `/etc/hosts' 文件名 Size: 158 文件大小 Blocks: 8 占用block数量 IO Block: 4096 block总大小(8*512) regular file 普通文件类型 Device: 803h/2051d Inode: 654109 文件的inode值 Links: 2 文件的硬链接数 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-09-01 00:01:20.993999985 +0800 Modify: 2010-01-12 21:28:22.000000000 +0800 Change: 2018-06-15 15:03:24.607961371 +0800 [root@oldbody test]# [root@oldbody ~]# stat -c %a /etc/hosts 644 [root@oldbody ~]#
5.5 du
统计磁盘空间使用情况
-h 人类可读
-s 显示文件总大小
-a 显示所有文件大小
–max-depth 显示N级目录的大小
–exclude 略过指定的目录或文件
[root@oldbody ~]# du -ah 显示当前目录下所有文件或目录 4.0K ./1.txt 4.0K ./.bashrc 4.0K ./.bash_logout 4.0K ./.viminfo 0 ./key1 4.0K ./.cshrc 4.0K ./liangli/a.txt 0 ./liangli/a/1.txt 4.0K ./liangli/a/3 4.0K ./liangli/a/1 4.0K ./liangli/a/2 0 ./liangli/a/2.txt 0 ./liangli/a/3.txt 16K ./liangli/a 4.0K ./liangli/b.txt 4.0K ./liangli/b/3 4.0K ./liangli/b/2 0 ./liangli/b/2.txt 4.0K ./liangli/b/4 0 ./liangli/b/3.txt 0 ./liangli/b/4.txt 16K ./liangli/b 44K ./liangli 4.0K ./xac 4.0K ./key/oldgirl 0 ./key/file3.txt 4.0K ./key/dir2.txt 4.0K ./key/dir4.txt 4.0K ./key/oldboy 4.0K ./key/key 4.0K ./key/key.gz 0 ./key/file1.txt 0 ./key/file2.txt 4.0K ./key/dir5.txt 4.0K ./key/dir1.txt 4.0K ./key/oldboy.gz.tar 0 ./key/file4.txt 4.0K ./key/dir3.txt 4.0K ./key/oldgirl.gz.tar 0 ./key/file5.txt 48K ./key 4.0K ./lsab 4.0K ./.lesshst 0 ./soft_link 4.0K ./anaconda-ks.cfg 16K ./.bash_history 8.0K ./install.log.syslog 4.0K ./xaa 4.0K ./.bash_profile 4.0K ./oldboy.txt 4.0K ./xab 4.0K ./liangli2018/dir1.ori/4 4.0K ./liangli2018/dir1.ori/7 4.0K ./liangli2018/dir1.ori/6 4.0K ./liangli2018/dir1.ori/5 20K ./liangli2018/dir1.ori 4.0K ./liangli2018/dir2/4 4.0K ./liangli2018/dir2/7 4.0K ./liangli2018/dir2/6 4.0K ./liangli2018/dir2/5 20K ./liangli2018/dir2 4.0K ./liangli2018/dir3/4 4.0K ./liangli2018/dir3/7 4.0K ./liangli2018/dir3/6 4.0K ./liangli2018/dir3/5 20K ./liangli2018/dir3 4.0K ./liangli2018/oldboy/test 8.0K ./liangli2018/oldboy 4.0K ./liangli2018/dir1/7 4.0K ./liangli2018/dir1/6 4.0K ./liangli2018/dir1/5 16K ./liangli2018/dir1 88K ./liangli2018 4.0K ./hard_link 4.0K ./.tcshrc 4.0K ./lsaa 4.0K ./lsac 28K ./install.log 304K . [root@oldbody ~]# du -sh 以人类可读的方式显示当前目录的总大小 304K . [root@oldbody ~]# du -sh /usr/local/ 显示指定目录的总大小 132K /usr/local/ [root@oldbody ~]# [root@oldbody ~]# du -h --max-depth=1 显示当前目录下第一层目录大小 44K ./liangli 48K ./key 88K ./liangli2018 304K . [root@oldbody ~]# du -h --max-depth=2 /usr/local 只显示第一层 二层目录的大小 4.0K /usr/local/lib 4.0K /usr/local/include 4.0K /usr/local/share/applications 80K /usr/local/share/man 4.0K /usr/local/share/info 92K /usr/local/share 4.0K /usr/local/lib64 4.0K /usr/local/sbin 4.0K /usr/local/src 4.0K /usr/local/etc 4.0K /usr/local/games 4.0K /usr/local/bin 4.0K /usr/local/libexec 132K /usr/local
5.6 date
显示与设置系统时间
参数 -s 设置系统时间 -d 显示指定字符串所描述的时间示例
date -s 是修改时间
[root@oldboy ~]# date -s "2018/09/18 20:21" 年 year 月 month 日 day [root@oldboy ~]# date 2018年 09月 18日 星期二 17:42:02 CST [root@oldboy ~]# date +%y-%m-%d 18-09-18 [root@oldboy ~]# [root@oldboy ~]# date +%Y-%m-%d 等同于%F 2018-09-18 [root@oldboy ~]# date +%F 显示完整日期格式 2018-09-18 [root@oldboy ~]# date +%w 查看周几(week) 2 [root@oldboy ~]# date +%X 显示时间 20时27分34秒 [root@oldboy ~]# date +%H:%M:%S 等同于%X 小时 hour 分 minute 秒 second 20:27:56 [root@oldboy ~]# [root@oldboy ~]# date +%Y-%m-%d\ %H:%M:%S 2018-09-18 20:29:52 [root@oldboy ~]# [root@oldboy ~]# date +%F\ %X 2018-09-18 20时30分33秒 [root@oldboy ~]# [root@oldboy ~]# date +%Y_%m_%d 2018_09_18 [root@oldboy ~]# [root@oldboy ~]# date +%F 2018-09-18 [root@oldboy ~]# date +%w 2 [root@oldboy ~]# date +%y-%m-%d 18-09-18 [root@oldboy ~]# echo $(date +%F)s 2018-09-18 [root@oldboy ~]#s tar和时间的结合应用 将liangli目录进行打包 [root@oldboy ~]# tar zcvf liangli.tar.gz liangli liangli/ liangli/oldboy.sh liangli/a.txt liangli/a liangli/file liangli/a.sh liangli/3 liangli/dir2.txt liangli/1 liangli/dir4.txt liangli/gongli.txt liangli/oldgirl.sh liangli/2 liangli/soft liangli/dir9.txt liangli/dir10.txt liangli/test.sh liangli/dir7.txt liangli/oldboy2.txt liangli/dir5.txt liangli/dir1.txt liangli/soft_file liangli/dir3.txt liangli/b liangli/dir6.txt liangli/dir8.txt [root@oldboy ~]# [root@oldboy ~]# ll 总用量 72 drwxr-xr-x 3 root root 4096 9月 13 23:35 a -rw-------. 1 root root 1151 6月 15 00:31 anaconda-ks.cfg drwxr-xr-x 2 root root 4096 9月 17 10:03 data -rw-r--r--. 1 root root 23048 6月 15 00:31 install.log -rw-r--r--. 1 root root 5890 6月 15 00:30 install.log.syslog drwxr-xr-x. 3 root root 4096 9月 17 17:59 key drwxr-xr-x. 2 root root 4096 9月 18 15:44 liangli drwxr-xr-x 8 root root 4096 9月 17 10:01 liangli1 -rw-r--r-- 1 root root 597 9月 18 18:30 liangli.tar.gz drwxr-xr-x 3 root root 4096 9月 17 10:03 lihao -rw-r--r-- 1 root root 15 9月 13 16:10 xargs [root@oldboy ~]# tar zcvf liangli_`date +%F`.tar.gz liangli liangli/ liangli/oldboy.sh liangli/a.txt liangli/a liangli/file liangli/a.sh liangli/3 liangli/dir2.txt liangli/1 liangli/dir4.txt liangli/gongli.txt liangli/oldgirl.sh liangli/2 liangli/soft liangli/dir9.txt liangli/dir10.txt liangli/test.sh liangli/dir7.txt liangli/oldboy2.txt liangli/dir5.txt liangli/dir1.txt liangli/soft_file liangli/dir3.txt liangli/b liangli/dir6.txt liangli/dir8.txt [root@oldboy ~]# ll 总用量 76 drwxr-xr-x 3 root root 4096 9月 13 23:35 a -rw-------. 1 root root 1151 6月 15 00:31 anaconda-ks.cfg drwxr-xr-x 2 root root 4096 9月 17 10:03 data -rw-r--r--. 1 root root 23048 6月 15 00:31 install.log -rw-r--r--. 1 root root 5890 6月 15 00:30 install.log.syslog drwxr-xr-x. 3 root root 4096 9月 17 17:59 key drwxr-xr-x. 2 root root 4096 9月 18 15:44 liangli drwxr-xr-x 8 root root 4096 9月 17 10:01 liangli1 -rw-r--r-- 1 root root 597 9月 18 18:32 liangli_2018-09-18.tar.gz -rw-r--r-- 1 root root 597 9月 18 18:30 liangli.tar.gz drwxr-xr-x 3 root root 4096 9月 17 10:03 lihao -rw-r--r-- 1 root root 15 9月 13 16:10 xargs [root@oldboy ~]# 也可以用$() [root@oldboy ~]# tar zcvf lihao_$(date +%F).tar.gz lihao/ lihao/ lihao/etext.sh lihao/nihao2/ lihao/nihao2/nihao3/ lihao/ctext.sh lihao/dtext.sh [root@oldboy ~]# ll 总用量 80 drwxr-xr-x 3 root root 4096 9月 13 23:35 a -rw-------. 1 root root 1151 6月 15 00:31 anaconda-ks.cfg drwxr-xr-x 2 root root 4096 9月 17 10:03 data -rw-r--r--. 1 root root 23048 6月 15 00:31 install.log -rw-r--r--. 1 root root 5890 6月 15 00:30 install.log.syslog drwxr-xr-x. 3 root root 4096 9月 17 17:59 key drwxr-xr-x. 2 root root 4096 9月 18 15:44 liangli drwxr-xr-x 8 root root 4096 9月 17 10:01 liangli1 -rw-r--r-- 1 root root 253 9月 18 18:34 liangli_2018-09-18.tar.gz -rw-r--r-- 1 root root 597 9月 18 18:30 liangli.tar.gz drwxr-xr-x 3 root root 4096 9月 17 10:03 lihao -rw-r--r-- 1 root root 253 9月 18 18:34 lihao_2018-09-18.tar.gz -rw-r--r-- 1 root root 15 9月 13 16:10 xargs [root@oldboy ~]# 显示昨天时间 -d参数 [root@oldboy ~]# date +%F -d "-1day" 2018-09-17 [root@oldboy ~]# 显示两个小时以前的文件 [root@oldboy ~]# date +%F-+%H 2018-09-18-+20 [root@oldboy ~]# date +%F-+%H -d "2H" 2018-09-18-+18 [root@oldboy ~]# 打包昨天以前的文件 [root@oldboy ~]# tar zcvf key_$(date +%F -d "-1day").tar.gz key [root@oldboy ~]#ll -rw-r--r-- 1 root root 128 9月 18 20:41 key_2018-09-17.tar.gz
5.7 echo
参数 -n 不要自动换行
echo是一个打印输出内容命令,配合> 或者>>可以为文件覆盖及追加内容, >意思为重定向,会清除文件里所有以前数据 >>为内容追加,只在文件尾部追加需要的内容
一对单引号 这条命令后面的oldboy.txt不存在的话,会创建该oldboy.txt文件的,如果文件oldboy.txt存在的话,会覆盖里面的内容进行创建新的
也可以在echo里面进行追加多行文字
echo ' 1111 注意下echo后面的空格 2222 3333'>>oldboy.txt
除了echo可以改文件之外 还有cat命令 cat >oldboy.txt 然后输入I am studying linux 回车 按ctrl+c 会写进去 然后再cat oldboy.txt查看下 cat >>oldboy.txt 追加新增内容进去 或者cat >oldboy.txt输入I am studying Linux 回车 输入ctrl+C 可以查看下cat oldboy.txt
还有cat的多行追加 首先得再记事本上写好
在Tech目录下 echo liangli 1>a.txt 2>b.txt 意思是将正确信息输出到a.txt中,将错误的信息输出到b.txt中 此时liangli输出到了a.txt中了,如果将e去掉再回车的话,那么,错误信息会输出到b.txt中了
echo oldboy 1>a.txt 2>a.txt 意思是将正确和错误的输出到a.txt中
或者 echo oldboy 1>a.txt 2>&1 (推荐方法) 也是将正确和错误的信息输出到a.txt中 让2的输出和1放到的位置一样
或者echo oldboy &>a.txt &> 这两个符号加起来就是将正确和错误信息都放在a.txt中
2>&1 1正确的输出内容放到哪儿,2错误输出内容也放在和1一样的位置
[root@oldboy ~]# echo -n "oldboy"; echo "oldboy" -n是不换行 oldboyoldboy [root@oldboy ~]# echo -e "oldboy\toldboy" -e 可以使用转义字符(\n回车 \t 是tab键) oldboy oldboy [root@oldboy ~]# cat >>/Tech/oldboy.txt<<liangli I am studying Linux222 liangli 其中liangli要进行顶格 [root@oldbody b]# echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root@oldbody b]# [root@oldbody /]# echo {1..3}{4..6} 14 15 16 24 25 26 34 35 36 [root@oldbody /]# 特殊环境变量(系统自带的) PATH 所有命令所在地 用冒号分隔 LANG 字符集变量 设置环境变量 export 例如 export PATH=$PATH:/root 把/root加入到PATH的环境变量 [root@oldboy ~]# PATH="$PATH:/root" [root@oldboy ~]# echo PATH PATH [root@oldboy ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root:/root [root@oldboy ~]# oldboy oldboy [root@oldboy ~]#
5.8 watch
监视命令执行情况 可以动态显示命令或程序的执行情况 类似与tail -f 或者tailf命令
5.9 witch
显示命令的全路径 witch命令查找的范围是PATH环境变量的路径
参数 -a 默认在PATH路径中由前往后查找命令,如果查找到了,就停止匹配了,使用-a选项将遍历所有PATH路径,输出所有匹配项
[root@oldbody ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@oldbody ~]# [root@oldboy ~]# which ls alias ls='ls --color=auto' /bin/ls [root@oldboy ~]# which oldboy /root/oldboy [root@oldboy ~]# 查看命令路径的方式 [root@oldboy ~]# which ifconfig /sbin/ifconfig [root@oldboy ~]# whereis -b ifconfig ifconfig: /sbin/ifconfig [root@oldboy ~]# locate ifconfig /sbin/ifconfig /usr/sbin/pifconfig /usr/share/man/de/man8/ifconfig.8.gz /usr/share/man/fr/man8/ifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz /usr/share/man/man8/pifconfig.8.gz /usr/share/man/pt/man8/ifconfig.8.gz
5.10 whereis
显示命令及其相关文件全路径 用于定位指定命令的可执行文件 源码文件及man帮助文件的路径
-b 参数 查找可执行文件
-m 参数 查找man帮助文件
-s 参数 查找源代码文件
[root@oldbody ~]# whereis echo echo: /bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz [root@oldbody ~]# whereis -b echo echo: /bin/echo [root@oldbody ~]# whereis -m echo echo: /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz [root@oldbody ~]# whereis -s echo echo: [root@oldbody ~]#
5.11 locate
快速定位文件路径 从数据库mlocate.db文件中查找文件名及对应的路径信息
-c 参数 只显示匹配的行数
查看数据库
[root@oldbody ~]# ll -h /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 1.6M 10月 8 20:06 /var/lib/mlocate/mlocate.db [root@oldbody ~]# cat /etc/cron.daily/mlocate.cron #!/bin/sh nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "zfs" { print $2 }') renice +19 -p $$ >/dev/null 2>&1 ionice -c2 -n7 -p $$ >/dev/null 2>&1 /usr/bin/updatedb -f "$nodevs" [root@oldbody ~]# 查找文件路径 -c 参数 只显示匹配的行数 [root@oldbody ~]# locate pwd /bin/pwd /etc/.pwd.lock /etc/latrace.d/pwd.conf /lib/modules/2.6.32-573.el6.x86_64/kernel/drivers/watchdog/hpwdt.ko /sbin/unix_chkpwd /usr/bin/pwdx /usr/include/pwd.h /usr/lib/x86_64-redhat-linux5E/include/pwd.h /usr/lib64/cracklib_dict.pwd /usr/lib64/python2.6/lib-dynload/spwdmodule.so /usr/share/cracklib/cracklib-small.pwd /usr/share/cracklib/pw_dict.pwd /usr/share/man/man0p/pwd.h.0p.gz /usr/share/man/man1/pwd.1.gz /usr/share/man/man1/pwdx.1.gz /usr/share/man/man1p/pwd.1p.gz /usr/share/man/man3/lckpwdf.3.gz /usr/share/man/man3/ulckpwdf.3.gz /usr/share/man/man8/unix_chkpwd.8.gz /usr/share/man/mann/pwd.n.gz /usr/share/man/overrides/ru/man3/lckpwdf.3.gz /usr/share/man/overrides/ru/man3/ulckpwdf.3.gz /usr/share/perl5/pwd.pl /usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt /usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt/nmi /usr/src/kernels/2.6.32-573.el6.x86_64/include/config/hpwdt/nmi/decoding.h [root@oldbody ~]# locate -c pwd 26 [root@oldbody ~]# [root@oldbody ~]# locate /etc/sh 只要部分符合就输出 /etc/shadow /etc/shadow- /etc/shells [root@oldbody ~]# locate /etc/sh* /etc/shadow /etc/shadow- /etc/shells [root@oldbody ~]# locate -c /etc/sh* 3 [root@oldbody ~]#
5.12 updatedb
更新mlocate数据库 updatedb命令可以创建或者更新locate命令使用的数据库,updatedb命令会因定时任务定期(每天)执行
-U 参数 更新指定目录相关的数据库信息,默认是扫描整个系统
-v 参数 显示命令的执行过程
查看数据库 [root@oldbody ~]# ll -h /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 1.6M 10月 8 20:06 /var/lib/mlocate/mlocate.db 更新数据库 [root@oldbody ~]# locate oldboy /root/oldboy.txt /root/key/oldboy /root/key/oldboy.gz.tar /root/liangli2018/oldboy /root/liangli2018/oldboy/test [root@oldbody ~]# touch oldboy20181008 [root@oldbody ~]# locate oldboy /root/oldboy.txt /root/key/oldboy /root/key/oldboy.gz.tar /root/liangli2018/oldboy /root/liangli2018/oldboy/test [root@oldbody ~]# updatedb -vU /root/ /root/1.txt /root/.bashrc /root/.bash_logout /root/oldboy20181008 /root/.viminfo /root/key1 /root/.cshrc /root/liangli /root/xac /root/key /root/lsab /root/.lesshst /root/soft_link /root/anaconda-ks.cfg /root/.bash_history /root/install.log.syslog /root/xaa /root/.bash_profile /root/oldboy.txt /root/xab /root/liangli2018 /root/hard_link /root/.tcshrc /root/lsaa /root/lsac /root/install.log /root/key/dir1.txt /root/key/dir2.txt /root/key/dir3.txt /root/key/dir4.txt /root/key/dir5.txt /root/key/file1.txt /root/key/file2.txt /root/key/file3.txt /root/key/file4.txt /root/key/file5.txt /root/key/key /root/key/key.gz /root/key/oldboy /root/key/oldboy.gz.tar /root/key/oldgirl /root/key/oldgirl.gz.tar /root/liangli/a /root/liangli/a.txt /root/liangli/b /root/liangli/b.txt /root/liangli/a/1 /root/liangli/a/1.txt /root/liangli/a/2 /root/liangli/a/2.txt /root/liangli/a/3 /root/liangli/a/3.txt /root/liangli/b/2 /root/liangli/b/2.txt /root/liangli/b/3 /root/liangli/b/3.txt /root/liangli/b/4 /root/liangli/b/4.txt /root/liangli2018/dir1 /root/liangli2018/dir1.ori /root/liangli2018/dir2 /root/liangli2018/dir3 /root/liangli2018/oldboy /root/liangli2018/dir1/5 /root/liangli2018/dir1/6 /root/liangli2018/dir1/7 /root/liangli2018/dir1.ori/4 /root/liangli2018/dir1.ori/5 /root/liangli2018/dir1.ori/6 /root/liangli2018/dir1.ori/7 /root/liangli2018/dir2/4 /root/liangli2018/dir2/5 /root/liangli2018/dir2/6 /root/liangli2018/dir2/7 /root/liangli2018/dir3/4 /root/liangli2018/dir3/5 /root/liangli2018/dir3/6 /root/liangli2018/dir3/7 /root/liangli2018/oldboy/test [root@oldbody ~]# locate oldboy /root/oldboy.txt /root/oldboy20181008 /root/key/oldboy /root/key/oldboy.gz.tar /root/liangli2018/oldboy /root/liangli2018/oldboy/test [root@oldbody ~]#