shell

作者: Impossible安徒生 | 来源:发表于2020-04-09 17:25 被阅读0次

    shell

    1. 怎么查看Linux服务器的负载,及判断哪些操作引起的负载过高

      • 使用top命令查看负载,在top下按“1”查看CPU核心数量;

      • shift+"c"按cpu使用率大小排序;

      • shif+"p"按内存使用率高低排序;

      • top -H -p pid 命令查看对应进程是哪个线程占用CPU过高(eg:8308)

    2. Linux 程序写文件时 rm 能否成功。rm -f呢。rm -f之后,正在写文件的程序会怎样 报什么错。

      每个文件都有 2 个 link 计数器 —— i_count 和 i_nlink。i_count 的意义是当前使用者的数量,i_nlink 的意义是介质连接的数量;或者可以理解为 i_count 是内存引用计数器,i_nlink 是硬盘引用计数器。再换句话说,当文件被某个进程引用时,i_count 就会增加;当创建文件的硬连接的时候,i_nlink 就会增加。

      当用户执行 rm 操作后,ls 或者其他文件管理命令不再能够找到这个文件,但是进程却依然在继续正常执行,依然能够从文件中正确的读取内容。这是因为,rm 操作只是将 i_nlink 置为 0 了;由于文件被进程引用的缘故,i_count 不为 0,所以系统没有真正删除这个文件。i_nlink 是文件删除的充分条件,而 i_count 才是文件删除的必要条件。

    3. find查找某个命令后缀:find ./ -name "*.txt"

    4. 如何查看端口占用

      • lsof -i:端口号
      • netstat -tunlp | grep 端口号
    5. 如何查看文件操作权限,如何更改文件权限。

      一、查看文件夹或文件的可读可写权限:
      ls -l 文件夹

      解析“drwxrwxrwx",这个权限说明一共10位。

      第一位代表文件类型,有两个数值:“d”和“-”,“d”代表目录,“-”代表非目录。后面9位可以拆分为3组来看,分别对应不同用户,2-4位代表所有者user的权限说明,5-7位代表组群group的权限说明,8-10位代表其他人other的权限说明。

      r代表可读权限,w代表可写权限,x代表可执行权限。"drwxrwxrwx”表示所有用户都对这个目录有可读可写可执行权限。

      二、修改权限

      chmod o w xxx.xxx
      #表示给其他人授予写xxx.xxx这个文件的权限
      
      chmod go-rw xxx.xxx
      #表示删除xxx.xxx中组群和其他人的读和写的权限
      
      • u 代表所有者(user)
      • g 代表所有者所在的组群(group)
      • o 代表其他人,但不是u和g (other)
      • a 代表全部的人,也就是包括u,g和o

      r、w、x也有对应的数字:r—4;w—2;x—1。
      sudo chmod -R 777 /var/www这行命令就是给/var/www这个目录赋予所有人可读可写可执行权限,
      0 代表没有任何权限

    6. 查询tcp连接处理CLOSE_WAIT的状态的数目

      netstat -nat|awk '{print $6}'|sort|uniq -c|sort -rn
      
    7. 查询一个文件内出现重复最多的数字

      cat words.txt | sort | uniq -c | sort -k1,1nr | head -10
      

      sort: 对单词进行排序

      uniq -c: 显示唯一的行,并在每行行首加上本行在文件中出现的次数

      sort -k1,1nr: 按照第一个字段,数值排序,且为逆序

      head -10: 取前10行数据

    8. 查询一个文件的行数

      wc [clw] file1 file2
      

      - c 统计字节数。

      - l 统计行数。

      • w 统计字数
    9. 查看文件打开的句柄

      lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
      
    10. 正则表达式

      Email地址:

      ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
      

      域名:

      [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
      

      InternetURL:

      [a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
      

      手机号码:

      ^(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])\d{8}$ 
      

      18位身份证号码(数字、字母x结尾):

      ^((\d{18})|([0-9x]{18})|([0-9X]{18}))$
      

      帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

      ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
      

      密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):

      ^[a-zA-Z]\w{5,17}$
      

      强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):

      ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$  
      

      日期格式:

      ^\d{4}-\d{1,2}-\d{1,2}
      

      有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":

      ^[1-9][0-9]*$ 
      

      中文字符的正则表达式:

      [\u4e00-\u9fa5]
      

      空白行的正则表达式:

      \n\s*\r    (可以用来删除空白行)
      

      HTML标记的正则表达式:

      <(\S*?)[^>]*>.*?</\1>|<.*? />   
      

      首尾空白字符的正则表达式:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等

      ^\s*|\s*$或(^\s*)|(\s*$)   
      

      IP地址:

      ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) 
      

    相关文章

      网友评论

          本文标题:shell

          本文链接:https://www.haomeiwen.com/subject/csthmhtx.html