zoukankan      html  css  js  c++  java
  • 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)如果前面的人都不会,最后再去问领导,首先领导可能不会觉得你的问题过于简单,反而还可能会觉得你爱思考,问的问题很有水平。
    通过其他同级或高级别的同事,对你所问的问题进行试水、把关,从而不会给领导留下不好的感觉,切忌有问题不经过思考直接问领导,偶尔一次还可以,次数多了,结果可想而知。
    但和技术不太相关,属于公司里的业务问题可以随时问,最好是尽早问。例如:网站业务细节、网站架构、运维文档、运维规范、流程制度等。
     
  • 相关阅读:
    Spring-Context之四:Spring容器及bean的定义
    Spring-Context之三:使用XML和Groovy DSL配置Bean
    Spring-Context之二:使用Spring提供的测试框架进行测试
    Spring-Context之一:一个简单的例子
    ActiveMQ第五弹:增加ReDelivery功能
    百度云+ KeePass 网络同步你的密码
    git生成秘钥之后同步到服务器
    谷歌chrome浏览器和火狐firefox浏览器自带http抓包工具和请求模拟插件
    ltnmp
    CentOS 下安装xdebug
  • 原文地址:https://www.cnblogs.com/fadewalk/p/10872450.html
Copyright © 2011-2022 走看看