shell

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*?)[^>]*>.*?|<.*? />   
    

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

    ^\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)