zoukankan      html  css  js  c++  java
  • Linux常用命令


    一、系统
    1.uname -a 查看内核/操作系统/CPU信息
    2.head -n 1 /etc/issue 查看操作系统版本
    3.cat /proc/cpuinfo 查看CPU信息
    4.hostname 查看计算机名
    5.lspci -tv 以树状图列出所有PCI设备
    6.lsusb -tv 以树状图列出所有USB设备
    7.lsmod 列出加载的内核模块,modinfo等
    8.env 查看系统环境变量
    9.uptime/w 查看系统运行时间、用户数、负载
    10.cat /proc/loadavg 查看系统负载

    11.ls

    # ls -lR  recursively list in subdirs //凑合着能看
    
    # ls -lZ  security context
    -r--r--r-- 1 root   root   u:object_r:file_name:s0 4096 2020-05-09 21:25 file_name //显示selinux相关内容
    
    # ls -lS
    -rw-rw---- 1 root sdcard_rw 40382 2020-04-27 15:29 cat_proc_interrupts.txt
    
    # ls -lS
    total 0
    -rw-rw---- 1 radio  wakelock 4096 2020-03-27 15:13 wake_lock   //sysfs文件是一页大小
    -rw-rw---- 1 radio  wakelock 4096 2020-03-27 15:13 wake_unlock
    drwxr-xr-x 2 root   root        0 2020-05-09 21:39 ddr         //目录为0

    二、资源查找统计
    1.free -m 查看内存使用量和交换区使用量
    2.df -h 查看各分区使用情况
    3.du -sh <目录名> 查看指定目录的大小
    4.grep MemTotal /proc/meminfo 查看内存总量
    5.grep MemFree /proc/meminfo 查看空闲内存量

    6. wc记录一个文件的行数 字数 字节数
    $ wc build_wifi.sh
    29 50 653 build_wifi.sh

    7. 统计一个目录下文件的个数(不包括子目录中的文件)
    $ ls -l|grep "^-"| wc -l

    8. 统计一个目录下文件的个数(包括子目录中的文件)
    $ ls -lR | grep "^-"| wc -l

    9. 统计文件夹下子目录的个数(仅统计子目录)
    $ ls -lR | grep "^d"| wc -l

    10. 统计所有以“gamma”开头的目录下的全部文件数量
    ls -lR gamma*/|grep "^-"| wc -l

    11.使用grep在特定的文件中查找

    $ find ./ -name *.cpp |xargs grep sendDataToController   //在*.cpp文件中查找"sendDataToController"

    12. 删除特定类型的文件

    $ ls *.class | xargs rm -rf {} //删除当前目录下所有的.class文件

    三、磁盘和分区文件
    1.fdisk -l 查看磁盘信息和所有分区
    2.mount | column -t 查看挂接的分区状态信息
    3.swapon -s 查看所有交换分区
    4.hdparm -i /dev/hda 查看磁盘参数(仅适用于IDE设备)
    5.dmesg | grep IDE # 查看启动时IDE设备检测状况

    6.mount -o remount,rw /    这个在根目录下的全部权限设置为rw,可以更改读写权限的

    7.查看文件(夹)大小
      du -h --max-depth=1 //查看当前目录下所有文件/夹大小,以KB显示

    8.查看磁盘挂载路径
      df -h

    9.Linux中ls显示文件类型
    l是链接,d是目录,c是字符设备文件,b是块设备,-是普通文件

    四、网络
    1.ifconfig 查看所有(-a)网络接口的属性和配置属性
    2.iptables -L 查看防火墙设置
    3.route -n 查看路由表
    4.netstat -lntp 查看所有监听端口
    5.netstat -antp 查看所有已经建立的连接
    6.netstat -s # 查看网络统计信息

    五、进程
    1.ps -ef 查看所有进程

    2.top 实时显示进程状态

    OP4AD9:/ # top --help
    usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]
    
    Show process activity in real time.
    
    -H      Show threads
    -k      Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)
    -o      Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)
    -O      Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)
    -s      Sort by field number (1-X, default 9)
    -b      Batch mode (no tty)
    -d      Delay SECONDS between each cycle (default 3)
    -m      Maximum number of tasks to show //只看top几的
    -n      Exit after NUMBER iterations
    -p      Show these PIDs  //只看指定进程的
    -u      Show these USERs //只看指定用户的
    -q      Quiet (no header lines)

    3.查看进程下的线程的数量
    法一、ps -C process_name -F; pstree <pid>查看此进程的线程数量
    法二、ps -C process1 -F ===>得到pid
    top -Hp <pid>
    1111 root 20 0 276864 11472 1296 S 0.0 0.6 0:00.02 process1
    1112 root 20 0 276864 11472 1296 S 0.0 0.6 0:00.00 process1
    法三、ps hH p <pid>
    ps hH p <pid> | wc -l
    法四、ls /proc/<PID>/task 查看此进程下的线程数,一个线程对应一个文件夹,还可以查看每个线程的status
    法五、 ls /proc/1112/task | wc -l 列出线程数6

    4.cat /proc/1113/status 查看<PID=1113>的一些信息

    5.kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。
    对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。

    六、用户
    1.w 查看活动用户
    2.id <用户名> 查看指定用户信息
    3.last 查看用户登录日志
    4.cut -d: -f1 /etc/passwd 查看系统所有用户
    5.cut -d: -f1 /etc/group # 查看系统所有组
    6.crontab -l 查看当前用户的计划任务

    七、服务

    八、程序
    1.rpm -qa 查看所有安装的软件包

    九.编辑

    1.对比文件内容差异
    $ vimdiff -bd hello_git hello_package Ubuntu中用于对比两个二进制文件的差异
    $ vimdiff yes.txt no.txt 对比.txt文件,yes.txt将被显示在左边,no.txt将被显示在右边
    -rwxr-xr-x 1 root root 12472 Jul 23 19:04 hello_git
    -rwxr-xr-x 1 root root 4216 Jul 23 19:05 hello_package
    可以看出repo中do_package后要比do_fetch后的可执行文件小很对,去掉了一些无用信息!

    2.光标控制
    ctrl + a //命令行中快速使光标跳转到行首
    ctrl + e //命令行中快速使光标跳转到行尾

    3. 用sed命令删除行尾的"^M"

    # sed -i 's/ //g' <文件名>   测试ok

    4. 用删除行尾空格

    :%s/s*$//g回车

    :wq 保存

    十、查找

    1. ls *.[ch]  只列出.c和.h文件

    2.查找字符串
      grep -r "xxxxx" ./ //在当前目录下递归查找"xxxxx"字符串
      find -name '*.php'|xargs grep 'include' //在当前目录及其子目录的php文件中查找include字符串
      find . -name '*.php' -exec grep -i -nH "include" {} ;//同上

    3.查找文件
      find ./ -name "xxxxx" // 在当前文件夹下递归查找文件"xxxxx"
      find ./ -name “directory” -type d //查找文件夹

    4.删除所有查找到的文件
      rm -rf `find . -name "*.class"`

    5. 同时查找*.dll和*.cmm文件

      find -name "*.dll" -o -name "*.cmm" 

    十一、安装拷贝

    1.安装
      install a/e c 结果类似: cp a/e c
      选项-D:install -D file1 a/b/file2 效果类似: mkdir -p a/b && cp file1 a/b/file2

    2.拷贝
      cp -arp == cp -d //-a表示在拷贝时保留链接属性,在考动态库时很有用!

    十二、压缩解压

      1、*.tar 用 tar –xvf 解压
      2、*.gz 用 gzip -d或者gunzip 解压
      3、*.tar.gz和*.tgz 用 tar –xzf 解压
      4、*.bz2 用 bzip2 -d或者用bunzip2 解压
      5、*.tar.bz2用tar –xjf 解压
      6、*.Z 用 uncompress 解压
      7、*.tar.Z 用tar –xZf 解压
      8、*.rar 用 unrar e解压
      9、*.zip 用 unzip 解压

    十三、log查看

    # dmesg | tail 显示dmesg最近一次的输出
    # dmesg | head -20 只输出dmesg命令的前20行日志:
    # dmesg | tail -20 只输出dmesg命令最后20行日志:
    搜索包含特定字符串的被检测到的硬件:
    # dmesg | grep -i usb
    # dmesg | grep -i dma
    # dmesg | grep -i tty
    # dmesg | grep -i memory

    # dmesg -c 清空dmesg缓冲区日志

    # watch "dmesg | tail -20" 实时监控dmesg日志输出:
    在某些发行版中可以使用命令‘tail -f /var/log/dmesg’来实时监控dmesg的日志输出。
    结论:dmesg命令在系统dmesg记录实时更改或产生的情况下是非常有用的。你可以使用man dmesg来获取更多关于dmesg的信息。

    # dmesg | more : 只显示1屏,一直按住enter键下移
    # dmesg | less : 只显示1屏,一直按住enter键翻页

    十四、补充

    iostat:Linux下报告块设备的io操作信息
    $ iostat -x 1 10 每秒打印一次,打印10s

    diffuse: Linux下图形化对比两个文件之间的差异
    $ diffuse test1.cpp test2.cpp

    hotshots: Linux下的截屏工具
    $ sudo apt-get install hotshots

    printf: 可以实现进制转换,如下将36转换成16进制的
    $ printf "%x " 36

    十五、安装软件

    sudo apt-get update
    sudo apt-get install openjdk-7-jdk
    sudo apt-get install openjdk-7-jre

    注释:
    1、apt-get update是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
    2、apt-get update只是更新了apt的资源列表,没有真正的对系统执行更新。如果需要,要使用apt-get upgrade来更新。

    1.用sed命令删除行尾的"^M"# sed -i 's/ //g' <文件名>   测试ok

  • 相关阅读:
    『ORACLE』 DG切换主备库角色(11g)
    Java基础语法(三)---数组
    JDK安装与配置详细图文教程
    谁把20岁上下的你给洗脑了
    看看已堕落的自己
    关于Git
    自定义UIDatePikerView
    细节关注(持续更新。。。)
    如何生成圆形的图片
    高效使用你的Xcode
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/9497276.html
Copyright © 2011-2022 走看看