• Linux常用命令 <小结>


    查看内存:top(查看进程维度的 全局内存 )、 free(内存总体情况)、vmstat(查看系统维度的内存)    
     网址:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 和 http://blog.csdn.net/lufeisan/article/details/53150971(kswapd0是虚拟内存管理中负责换页的,当服务器内存不足的时候kswapd0会执行换页操作)
    常用命令:
    top -H 查看标记出内存占用最高的进程
    top -u username 查看某一用户的进程,也可以在top里键入u后输入username切换用户
    top -d 5 间隔5s取一次值(平均值?)
    top下各个功能按键详见网址链接
     
    free -b/-k/-m 分别以不同(字节、KB、MB) 为单位显示内存
    free -s+number 每number秒后刷新一次内存使用情况
    free -t 显示内存总和列
    free -o 不显示缓冲区调节列
     
    vmstat -n1# -n 1 每一秒刷新一次,数据是累加的
     
                                     查看、启动、杀死进程:http://blog.csdn.net/wojiaopanpan/article/details/7286430/)
    ps a  不区分用户的显示所有程序
    ps u   以用户为主的格式来显示程序状况
    ps x   不区分终端机的显示所有程序
    ps w   显示加宽以显示较多信息
    常用组合 ps auxw
    加管道符查看特定的进程:ps auxw | grep this_program
    查看时去掉当前的grep进程: ps auxw | grep this_program | grep -v grep
    查看当前的进程并以id排序: ps auxw -sort id
    统计特定进程的数量:ps -ef | grep this_program | wc -l
     
    检测流量:ifstat (可参考网址:http://man.linuxde.net/ifstat  
    ifstat -l    检测所有接口
    ifstat -t    每一行前面加个时间戳
    ifstat -T   最后加一列total计算全部带宽
    ifstat -i     后接指定监控的某一个接口
     
    cat /proc/net/dev查看当前的流量接收总值
    间隔x秒执行cat /proc/net/dev 查看总值,与之前的数值相减并除以时间间隔x
     
    查看内存、流量、cpu:vmstat 3   (每3秒获取一次数据)
    cat /proc/stat查看当前cpu
    间隔x秒执行cat /proc/stat 查看总值,与之前的数值相减并除以时间间隔x
    cpu -r
    mpstat -P ALL x(要监控的CPU个数)
     
    cat /proc/meminfo查看当前memory使用
    内存使用率 = 1 - MemFree/MemTotal
    free -h (used available)
    真正被使用的内存=used-buffers-cache
    Linux和windows不同,会尽可能的使用内存,将剩余的内存用作缓存加快进程的缓冲速度。
     
    查看磁盘中文件使用情况:df  (可参考网址:http://os.51cto.com/art/201012/240726_all.htm
    df -a   列出所有文件的磁盘使用情况
    df -ai   列出各文件系统的i节点使用情况
    df -h   方便阅读方式显示
    磁盘会有5%留作保留空间inode(减少系统碎片,在磁盘爆满的时候允许root用户登录维护),total size-available=used+inode
    磁盘实际大小参考 fdisk -l中的bytes
     
    iotop 监控io读写情况
    打印正在进行读写操作的进程
     
    测试磁盘读写速度 time dd if=/dev/sda of=/testrw.dbf bs=4k
     
    查看磁盘中目录使用情况:du 后可接具体目录路径,若不写默认为当前目录
     
    划分磁盘分区:fdisk
     
    ifconfig:显示或配置网络设备
    find / -name 文件名  查找文件存放的目录
    sz filename  从服务器上下载文件到本地
    rz(回车 选择文件) 从本地上传文件到服务器
    下载和上传的存放路径修改 SecureCRT顶部栏>>options>>session options>>X/Y/Z modem
     
    修改系统时间
    date -s“2017-5-13 11:23:00”
    查看系统当前时间
    date
     
     
    抓包命令行
    tcpdump [-i 网卡] -nnAX '要监听的协议/要监听的主机/要监听的端口/要监听的主机加端口'
    -i:interface 监听的网卡。
    -nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
    -A:以ascii的方式显示数据包,抓取web数据时很有用。
    -X:数据包将会以16进制和ascii的方式显示。
    表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
     
    tcpdump -i eth0 -nn 'smtp' -w /home/package.cap
     
    抓包保存为wireshark可读的文件
    -w 路径文件名称.cap
    例:tcpdump -i ens33 -nnAX -w /home/package.cap
             tcpdump -i any -s0 -w pbx.pcap   监听所有端口
             tcpdump -i any port 5060 or 5067 or 5077 or 5088 or 5099 -w sbc.pcap
     
    使用tcpdump抓包时最常见的问题是 permission denied
    grep tcpdump /sys/kernel/security/apparmor/profiles  (可以看到tcpdump的状态是 enforce)
    aa-complain /usr/sbin/tcpdump  (如果提示没有安装aa-complain)
    apt install apparmor-utils
    aa-complain /usr/sbin/tcpdump
    aa-enforce /usr/sbin/tcpdump(再转换回enforce状态的命令行)
     
    md5sum命令用于生成和校验文件的md5值。只要文件内容相同,md5值就相同
     
    迅速找到软件位置的命令
    whereis ***  (哈哈哈好逗)
     
    stress命令    安装stress apt get stress(或者安装包安装,路径和步骤见下方34.5)
    stress参数:
    1)增加CPU负载:stress -c -数字 数字越大,对CPU造成的负载越大,对于2核的虚拟机,数字4就够了,CPU分分钟100%(参数c---产生多个处理sqrt()函数的CPU进程)
    2)增加内存负载: stress --vm 2 --vm-bytes 250M --vm-hang 0  (参数--vm-bytes ----指定内存的Bytes数,默认值是1,与--vm-hang配合使用;参数--vm---产生多个处理malloc()内存分配函数的进程;参数--vm-hang----指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器)
    3)增加磁盘存储负载:stress -d 1 --hdd-noclean --hdd-bytes 13 (参数--hdd-noclean-----指定向磁盘中写入固定大小的文件,这个文件通过调用mkstemp()产生并保存在当前目录下,默认是文件产生后就被执行unlink(清除)操作;参数--hdd-bytes---将产生的文件全部保存在当前目录下,这会将磁盘空间逐步耗尽)
     
    34.5安装包安装stress命令:
    1)路径--\192.168.11.181lessons
    2)rz命令导入系统中的某个路径下,tar -vxzf 解压
    3)进入解压后的stress-1.0.4文件夹下,执行./configure
    4)完成后执行 make命令;完成后执行make check检查结果,看到ALL 2 tests passed就是OK了
    5)执行make install;完成后执行make clean;完成
    6)在某一个路径下创建测试用的文件夹,在文件夹里执行增加各种负载的命令后,要删除因为命令增加的文件负载时,直接删除文件夹就好。
     
    启动网卡命令 ifconfig ens192 up
    查看所有网卡 ifconfig -a
     
    解压打包
    解压tar文件    tar -zxvf /路径/文件名
    打包tar文件    tar -cvf 自定义文件名.tar 要打包的文件夹
     
    解压zip文件    unzip /路径/文件名
    打包zip文件    zip 自定义文件名.tar 要打包的文件夹
     
    具体内容 https://blog.csdn.net/LEON1741/article/details/54317715
     
    vi/vim命令批量注释反注释
    vi 打开并编辑文件: vi 路径/文件名;
    需要编辑时键入 i 表示in
    写入并退出 :wq          强制退出     q!
     
    ls
    ls命令能够列出当前目录下的所有内容:(空格是必须的)
    ls [-选项] [文件名或者目录名]
    查看/etc目录下的内容 ls /etc
    查看隐藏的文件 ls -a
    查看包括子文件 ls -r [文件名]
    只查看当前目录 ls -d [文件名]
    查看内容的详细信息 ls -l [文件名]
     
    cd
    cd命令能够改变当前用户所处的位置:
    cd 路径
    直接在命令行中输入cd命令而不加任何参数,可以马上回到用户的主目录(home)
     
    绝对路径和相对路径:Ubuntu中所有文件或者目录都挂载在“/”目录下,所以如果一个文件或者目录的详细位置是从“/”开始的话,这样的路径称为绝对路径,如/etc/init.d/lvm;如果路径不是从根写起,则称之为相对路径,例如,现在所处的位置为/etc目录中,如果现在要进入init.d目录中则可以执行如下命令:cd init.d
    特殊目录的表示方法及含义
    特殊目录的表示方法
    含 义
    .
    代表当前目录
    ..
    代表上层目录
    ~
    代表当前登录用户的宿主目录
    ~用户名
    代表进入~后用户的宿主目录
    -
    代表前一目录,即进入当前目录之前操作的目录
    如果一个文件名(目录名)以“.”开头则表示它是隐藏文件(目录)。并且 在默认情况下,蓝色代表一个目录,白色代表一个普通文件。在Ubuntu中,在默认情况下蓝色代表目录,白色代表普通文件,红色代表压缩文件或者软件包,绿色代表可执行文件,浅蓝色代表链接文件,黄色代表 设备文件等。但是这并不是在所有情况下都是有效的,之所以能以颜色区分,是因为在执行命令“ls -l”时,实际上是执行了“ls --color=auto”命令,可以使用alias命令进行查看
     
    pwd
    pwd命令能够显示当前所处的路径:pwd
     
    touch
    touch命令能够创建一个空白文件,或者改变文件的编辑时间为当前时间
    创建文件:touch 路径 [文件名] --(路径可省略)
    mtime:文件内容被编辑的时间、ctime:文件属性被修改的时间、atime:文件内容被读取的时间
    查看文件内容被编辑的时间:ls -l --time=atime [文件名]
    仅修改文件的mtime:touch -m --time=mtime [文件名]
    仅修改文件的atime:touch -a --time=atime [文件名]
     
    mkdir
    mkdir 命令能够创建一个目录:mkdir 路径 目录名
    创建多级目录:mkdir -p 路径 目录名(如home/1/2/3)
     
    rmdir
    rmdir命令能够删除一个空目录:rmdir 路径 目录名
     
    rm
    rm命令可以删除目录、文件、目录和文件:rm -f 路径 文件名                                        rm  -fr 路径 目录
    强制删除:-f
    删除前询问:-i
    删除目录:-r
    删除文件夹名为1个空格的文件夹:rm -rf ./
     
    cp
    cp命令能够复制一个文件或者生成一个不同名但是内容相同的文件
    复制文件:cp 源文件名  目标路径
    复制但不同名文件:cp 源文件名  目标路径 新文件名
    强制复制:-f
    复制前询问:-i
    复制目录:-r
    只有当源文件比目标文件新时才复制:-u
     
    sudo -i 使用当前用户的密码切换为root           
    su 切换为root,需要输入root密码
     
    top      
    查看CPU占用最高的进程   top -H
    top - 02:53:32 up 16 days,  6:34, 17 users,  load average: 0.24, 0.21, 0.24
    Tasks: 481 total,   3 running, 474 sleeping,   0 stopped,   4 zombie
    Cpu(s): 10.3%us,  1.8%sy,  0.0%ni, 86.6%id,  0.5%wa,  0.2%hi,  0.6%si,  0.0%st
    Mem:   4042764k total,  4001096k used,    41668k free,   383536k buffers
    Swap:  2104472k total,     7900k used,  2096572k free,  1557040k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    32497 jacky    20  0  669m 222m  31m R   10  5.6       29:27.62  firefox
     4788 yiuwing  20 -10  257m  18m  13m S    5  0.5       5:42.44   konsole
    第一行(top):
    “00:11:04”为系统当前时刻;
    “3:35”为系统启动后到现在的运作时间;
    “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
    “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
    第二行(Tasks):
    “59 total”为当前系统进程总数;
    “1 running”为当前运行中的进程数;
    “58 sleeping”为当前处于等待状态中的进程数;
    “0 stoped”为被停止的系统进程数;
    “0 zombie”为被复原的进程数;
    第三行(Cpus):
    分别表示了 CPU 当前的使用率;
    第四行(Mem):
    分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
    第五行(Swap):
    表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
    第六行:
    PID--进程ID
    USER--进程所有者的用户名
    PR--优先级
    NI--nice值。负值表示高优先级,正值表示低优先级
    VIRT--进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES--进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR--共享内存大小,单位kb
    S--进程状态(D =不可中断的睡眠状态;R =运行;S =睡眠;T =跟踪/停止;Z =僵尸进程  )
    %CPU--上次更新到现在的CPU时间占用百分比
    %MEM--进程使用的物理内存 百分比
    TIME+--进程使用的CPU时间总计,单位1/100秒
    COMMAND--命令名/命令行
     
    SecureCRT 中各种传输协议分析: http://blog.sina.com.cn/s/blog_61798d5d01018yk4.html
     
    在第一次使用SSH2协议向服务器建立连接时,,SecureCRT首先会检查Server的公钥是否在本地数据库存放,如果没有,则不会把你的用户名、口令传输过去,它会将服务器端的公钥取回来(可以直接从Server取,也可以从第三方获取),并提示:
    The host key database does not contain an entry for the
    hostname 172.16.200.244, which resolved to 172.16.200.244,
    port 22. If you have received this message more
    than once for 172.16.200.244, this may mean that 172.16.200.244
    is an “alias” which resolves to different hosts.
    It is recommended you verify your host key before accepting.
    Server’s host key fingerprint (MD5 hash):
    24:0f:36:5e:43:ad:f5:b8:1b:ae:ac:f7:9f:c2:c0:4c
    当你选择确认保存,则SecureCRT会把Server的公钥保存到本地公钥数据库,然后会重新让你输入用户名和密码,再次安全地登录服务器,因为这一次 会使用Server的公钥来加密用户名和口令。之后的登录和交互就会一直使用本地数据库保存的Server的公钥来加密传输。
    ssh:secure shell
     
    Linux之间传输文件
    使用Linux上传和下载的命令:sz(从服务器下载到本地)、rz(从本地上传到服务器)
    存放路径需要在CRT中设置,右键服务器窗口,选择session options,在左边栏选择X/Y/Zmodem
     
    1、scp (secure copye)——Linux文件传送命令(以root身份运行)
    优点:简单方便,安全可靠;支持限速参数
    缺点:不支持排除子目录
    将远程servername的/home/ftp/pub中的file1复制到本机:#scp servername:/home/ftp/pub/file1
    将本机的/tmp中的file2复制到远程servername中的/boot目录下:#scp /tmp/file2 servername:/boot 
    scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>
    举例:
    scp /home/work/source.txt  username@192.168.0.10:/home/work/  #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
     
    scp username@192.168.0.10:/home/work/source.txt /home/work   #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
     
    scp username@192.168.0.10:/home/work/source.txt username@192.168.0.11:/home/work/  #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
     
    端口  scp -P 1022 文件名 用户名@IP:/路径
    拷贝文件夹,加-r参数
    显示详情,加-v参数
    IP地址可以替换成主机名
     
    2、rsync--类unix系统下的数据镜像备份工具
    优点:功能强大,操作类似scp,支持排除子目录,支持限速参数;还支持本地复制
    缺点:暂无
    rsync [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>
    举例:
    rsync /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
    rsync /work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
    rsync work@192.168.0.10:home/work/source.txt work@192.168.0.11:/home/work/  #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
    rsync -r -v --exclude sourcedir/notinclude /home/work/sourcedir work@www.myhost.com: /home/work/  # 排除子目录,注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉
    拷贝文件夹,加-r参数
    显示详情,加-v参数
    IP地址可以替换成主机名
     
    3、wget
    优点:简单方便,支持排除目录,支持限速参数
    缺点:只能从远程机器将文件或文件夹下载到本地,并且远程机器需要支持ftp服务(例如启动proftpd);参数较多,使用上比scp复杂
    wget [参数] ftp://<目标机器ip或主机名>/<文件的绝对路径>   #proftpd格式
    举例:
    wget ftp://192.168.0.10//home/work/source.txt #从192.168.0.10上拷贝文件夹source.txt
    wget -nH -P /home/work/ ftp://www.myhost.com//home/work/source.txt  #指定本地保存路径,使用参数“-P 路径“或者”--directory -prefix=路径”;-nH,--no-host-directory不创建主机目录
     
    iostat -x 1
    打印磁盘使用率$util 读写等待时间 r_wait w_wait 总等待时间 $await
     
    Tips:
    1、进入mysql时如果带着密码会提示不安全,不需要修改配置文件就可以解决的方法是
    在命令行最后加上 2>/dev/null
    如 mysql -uroot -p**** database 2>/dev/null
    不会打印不安全的提示
     
     
    遇到的问题:
    1、在使用  scp root@192.168.3.5:/root/sipp103.star /home 命令拷贝文件时,提示:ssh connect to 192.168.3.5 port22 :no route to host,暂时在搜索报错原因和解决方法
    ----(已解决)阿里云服务器与192.168.3.5不在同一个域,阿里云搜不到3.5,外部搜不到内部,内部可以传输出去。解决方法:1、从3.5拷贝到3.9,再从3.9拷贝到阿里云;2、或登录3.5远程,直接拷贝到阿里云
     
    2、分析阿里云服务器内存占用高的问题:使用top命令可以看到,当运行的进程在2000左右时,使用量占总量将近50%的比例。
    ??:CPU的比例高于不高的比较标准是啥?2000个进程占用50%算高还是不高?但是2000个进程大部分都显示0%的占用率
    分析思路:先找出内存占用最高的进程>>查看进程详情>>如何使该进程占用内存缩小(清理缓存或者直接结束进程)
    ??:CPU占用最高的进程最高也只有5%的占用率,进程还是top命令自身,那到底是什么导致高占用率?是因为进程数量太高?
    需要找到可以查看导致内存占用高的命令
    ----(已解决)使用ps auxw命令查看所有进程的详细信息,看到docker-proxy端口进程超大量重复
  • 相关阅读:
    golang 引用相对路径package
    LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全
    C#代码实现把网页文件保存为mht文件
    AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法
    Windows下visual studio code搭建golang开发环境
    Eclipse配置开发Go的插件——Goclipse
    go语言条件语句 if else
    Go语言基础:method
    GO语言基础之method
    go中的接口
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/12622956.html
Copyright © 2020-2023  润新知