介绍ubuntu的使用…

使用技巧

快捷键

  • 显示隐藏文件:ctrl+h

  • zsh窗口复制:ctrl+insert

  • zsh窗口粘贴:shift+insert

    查看cpu信息

  • 查看是否支持64位,cpu架构arm或者x86,x86_64等,0表示支持64位
    cat /proc/cpuinfo | grep flags | grep lm | wc -l

  • 64位会有x86_64标识
    uname -a

  • 查看cpu型号:
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

  • 查看物理CPU个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

  • 查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep "cpu cores"| uniq

  • 查看逻辑core的个数(系统有关)
    cat /proc/cpuinfo| grep "processor"| wc -l

  • 查看磁盘是否是固态,0表示是固态,1表示是机械盘
    lsblk -d -o name,rota

系统版本

1
cat /proc/version

查看内存命令

  • 查看内存使用:
    free -h

  • 查看分区内存信息,内存单位KB
    df

  • 查看分区内存信息,内存单位MB
    df -h

  • 机器的内存使用信息
    cat /proc/meminfo

  • 查看当前目录中各个文件的大小,前者单位为B,后者单位为KB、MB显示;
    ls -ll 或者 ls -lh

  • 查看当前文件夹的磁盘使用情况:
    du -h --max-depth=1

  • 查看当前目录(指定目录)总大小:
    du -sh (指定目录)

进程与线程

  • 查看进程PID
    ps -ef | grep demo

  • 查看进程的线程
    方法一:top -H -p demo-pid
    方法二:cat /proc/线程pid/status, 其中有Threads显示线程数量
    方法三:cat /proc/进程pid/sched, 其中第一行threads显示线程数量

查看进程RSS使用情况

cat /proc/PID/status | grep RSS

网络

  • 根据端口号查进程
    ps -aux|grep 3333

  • 根据进程号查进程情况
    ps -ef|grep 15522

  • 查看并释放使用的端口:

    1
    2
    sudo lsof -i:3333 # 查看占用进程号9999
    sudo kill -i 9999
  • 网络流量监控iptables
    对程序暴露端口流量进行监控统计,可以利用Linux中自带的Iptable添加简单的规则让其起到端口流量统计的作用。但是需要注意的是在服务器重启、Iptable服务重启的时候统计数据会被重置清零。

    1. 输入监控
      下面示例是监控目标端口是8080的输入流量 –dport(destination port 的缩写)。即查看输入到本机端口为8080的输入流量,

      1
      iptables -A INPUT -p tcp --dport 8080

      查看统计数据

      1
      iptable -L -v -n -x
    2. 输出监控
      下面示例是监控来源端口是8080的输出流量 –sport(source port 的缩写)。即本机输出端口号为8080的输出流量

      1
      iptables -A OUTPUT -p tcp --sport 8080

      查看统计数据

      1
      iptable -L -v -n -x
    3. 举例
      其中的chain input中,可以看到添加的对应监控端口的输入流量。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      ⚡ root@localhost  /home/mvi2-inference1/compose  iptables -A INPUT -p tcp --dport 3087
      ⚡ root@localhost  /home/mvi2-inference1/compose  iptables -L -v -n -x
      Chain INPUT (policy ACCEPT 238 packets, 39083 bytes)
      pkts bytes target prot opt in out source destination
      177436 10272381989 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8083
      177436 10272381989 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8083
      0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3087

      Chain FORWARD (policy DROP 0 packets, 0 bytes)
      pkts bytes target prot opt in out source destination
      209763 82397219 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
      209763 82397219 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
      138270 79520797 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
      0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
      71493 2876422 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
      0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0

      Chain OUTPUT (policy ACCEPT 36 packets, 6400 bytes)
      pkts bytes target prot opt in out source destination
      51887 185028735 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:8083

      Chain DOCKER (1 references)
      pkts bytes target prot opt in out source destination
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.3 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.4 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.5 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.6 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.7 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.8 tcp dpt:8001
      0 0 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.9 tcp dpt:8001

      Chain DOCKER-ISOLATION-STAGE-1 (1 references)
      pkts bytes target prot opt in out source destination
      71493 2876422 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
      209763 82397219 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

      Chain DOCKER-ISOLATION-STAGE-2 (1 references)
      pkts bytes target prot opt in out source destination
      0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
      71493 2876422 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

      Chain DOCKER-USER (1 references)
      pkts bytes target prot opt in out source destination
      209763 82397219 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

查看可执行文件的相关信息

  • file 可执行文件:可查看可执行文件是ARM架构还是X86架构;
  • nm 可执行文件:可查看文件中的符号,包括全局变量,全局函数等;
  • ldd 可执行文件:可查看文件执行所需要的动态库;
  • strings 可执行文件:可查看文件中所有的符号,包括编译器版本信息;
  • readelf 可执行文件或者库文件:可查看文件的所有详细信息,包括文件的头信息,动态库信息,段信息等;
    • readelf -h library.a:查看文件架构等信息;

查看库文件函数接口

nm -g --defined-only *.a,或者*.so;

权限查看与修改

  • 修改文件夹以及子文件夹的读写权限:chmod -R 777 /dir1/dir2

查看文件末尾指定行数

tail -n 100 a.txt

查找

  • 查找指定目录的指定文件:find / -name "a.txt"
  • 在某个目录下查找包含某个字符串的文件:grep -r "zh_CN" ./

进入root权限

  • 暂时性的
    1
    2
    3
    4
    5
    sudo -i
    # 输入密码即可
    # 但是这个方法持续的时间只有五分钟,
    # 想要延长时间可以用以下命令再延长五分钟。
    sudo -v
  • 非暂时性的
    1
    2
    3
    4
    5
    6
    7
    sudo passwd root
    --> 设置密码
    su
    --> 输入刚设置密码

    # 如果想要退出
    exit

Issues

Issue1:/dev/loop 100%

Solution:

1
sudo apt autoremove --purge snapd

Issue: 搜狗输入法的右上角图标消失

Solution: 搜索fcitx打开输入标志。
如果还是没有,setting->region & language,先安装语言支持,再搜索fcitx,打开右上角输入图标,选择对应的输入法。

Issue: error_log占用空间太大

根本原因是改了某些路径的权限导致。
使用tail error_log查看有问题的路径,然后:

1
2
3
4
5
6
7
8
9
10
# 修改问题路径的权限
sudo chmod 755 /usr/lib/cups/notifier/dbus
sudo chown root.root /usr/lib/cups/notifier/dbus

# 查看权限
ll /usr/lib/cups/notifier/dbus

sudo rm /var/log/cups/error*
sudo /etc/init.d/cups restart
tail error_log