第五章 信息显示与搜索文件命令
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 ~]#