5.8-12 watch、which、whereis、locate、updatedb
5.8 watch:监视命令执行情况
watch命令可以以全屏的方式动态显示命令或程序的执行情况。
-n 命令执行的间隔时间,默认为2s
-d 高亮显示命令结果的变动之处
-t 关闭watch命令在顶部显示的时间间隔、命令及当前时间的输出
每隔一秒高亮显示网络链接数的变化情况。
[root@cs6-mini ~]# watch -n 1 netstat -ant Every 1.0s: netstat -ant Wed May 15 21:17:20 2019 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 10.0.0.100:22 10.0.0.1:11596 ESTABLISHED tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN
监测当前目录中lewen.log文件的变化
[root@cs6-mini ~]# echo 12345 >lewen.log [root@cs6-mini ~]# echo 12345 >>lewen.log #另外一个窗口 [root@cs6-mini ~]# watch cat lewen.log Every 2.0s: cat lewen.log Wed May 15 21:18:36 2019 12345 12345 -t参数不显示标题。 [root@cs6-mini ~]# watch -t cat lewen.log 12345 12345
5.9 which:显示命令的全路径
which命令用于显示命令的全路径,我们常用这个命令来查找命令在哪里,which命令查找的范围是PATH环境变量的路径。
which命令用于在PATH环境变量里查找指定的命令。
-a 默认在PATH路径中由前往后查找命令,如果查找到了,就停止匹配。使用-a选项将遍历所有PATH路径,输出所有匹配项
[root@cs6-mini ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@cs6-mini ~]# which date /bin/date [root@cs6-mini ~]# which which #<==如果对指定命令设置了别名,那么使用which功能还将会显示别名的情况。 alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which [root@cs6-mini ~]# which cd #<==Bash内置命令无法使用which。 /usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) [root@doit ~]# which -a mysql /usr/bin/mysql
5.10 whereis:显示命令及其相关文件全路径
whereis命令用于定位指定命令的可执行文件、源码文件及man帮助文件的路径
2)whereis命令用于在PATH环境变量里查找指定的命令。
-b 查找可执行文件
-s 查找源代码文件
-m 查找man帮助文件
[root@doit ~]# whereis svn svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz [root@doit ~]# whereis -b svn svn: /usr/bin/svn [root@doit ~]# whereis -s svn svn:[root@doit ~]#
Linux工程师工作中用得最多的还是查找命令所在路径,因此which更常用。
5.11 locate:快速定位文件路径
yum -y install mlocate
Linux系统里有一个名为mlocate.db的数据库文件,这个文件包含系统文件的文件名及对应的路径信息。locate命令查找文件时就不用遍历磁盘,而是直接查找mlocate.db文件,这样可以快速给出结果,但会出现一个问题,如果是新添加的文件,那么mlocate.db文件就没有记录,因此使用locate命令时可以先用updatedb命令更新一下mlocate.db数据库文件。当然,mlocate.db还会由系统自带的定时任务执行updatedb命令定期更新。
2)locate命令用于从数据库中查找指定的命令。
-c 不显示匹配的内容,只显示匹配到的行数
-r 支持基本正则表达式匹配
-i 匹配时忽略大小写
-regex 支持扩展正则表达式匹配
查看数据库
[root@cs6-mini ~]# ll -h /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 540K May 15 21:38 /var/lib/mlocate/mlocate.db [root@cs6-mini ~]# 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@cs6-mini ~]# locate /etc/sh /etc/shadow /etc/shadow- /etc/shells [root@cs6-mini ~]# locate /etc/sh* /etc/shadow /etc/shadow- /etc/shells [root@cs6-mini ~]# locate -c /etc/*sh* 21
5.12 updatedb:更新mlocate数据库
updatedb命令可以创建或者更新locate命令使用的数据库。updatedb命令会因定时任务定期(每天)执行。
-U 更新指定目录相关的数据库信息。默认是扫描整个系统,耗时较长,因此可以使用这个参数
-v 显示命令的执行过程
查找文件路径。
[root@cs6-mini ~]# locate pwd locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory [root@cs6-mini ~]# updatedb [root@cs6-mini ~]# locate pwd /bin/pwd /etc/.pwd.lock /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/watchdog/hpwdt.ko /sbin/unix_chkpwd /usr/bin/pwdx /usr/lib64/cracklib_dict.pwd /usr/lib64/python2.6/lib-dynload/spwdmodule.so [root@cs6-mini ~]# locate -c pwd 15
[root@cs6-mini ~]# locate lewen.log /root/lewen.log [root@cs6-mini ~]# touch lewen20190115 [root@cs6-mini ~]# locate lewen /home/lewen /root/lewen.log /root/lewen.nc /root/lewen.txt /var/db/sudo/lewen /var/spool/mail/lewen [root@cs6-mini ~]# updatedb -vU /root/ /root/test.txt /root/fav.jpg /root/.bashrc /root/hello.txt ... [root@cs6-mini ~]# locate lewen /root/lewen.log /root/lewen.nc /root/lewen.txt /root/lewen20190115
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视
如果因害怕而不敢问问题,可能会无法完成工作,甚至会失去成长机会;如果随意问问题又可能会被人鄙视,甚至丢掉工作,那么老男孩当初入职是怎么问问题的呢?且看下文:
1)首先问身边的中低运维同事。
因为大家水平相差不会太大,同事可能不会觉得你所问的问题太过简单,也有可能他们也不会,如果能给出解答则更好,就不用去问其他高级运维同事了。
2)如果中低运维同事也不会,再去问身边的高级运维同事,因为中低运维都不会,所以高级运维就不会觉得你的问题太过简单了。
3)如果前面的人都不会,最后再去问领导,首先领导可能不会觉得你的问题过于简单,反而还可能会觉得你爱思考,问的问题很有水平。
通过其他同级或高级别的同事,对你所问的问题进行试水、把关,从而不会给领导留下不好的感觉,切忌有问题不经过思考直接问领导,偶尔一次还可以,次数多了,结果可想而知。
但和技术不太相关,属于公司里的业务问题可以随时问,最好是尽早问。例如:网站业务细节、网站架构、运维文档、运维规范、流程制度等。