笔者之前已经在博文 Ubuntu小技巧16–常见命令使用方法 中记录了ubuntu上大量常见实用命令和常见异常错误的处理方法,但是内容较多、排版不太和谐,因此后续会在此处续更。老版本上的软件安装和常见问题再次出现时,将会同步更新到此处。
1 系统命令
-
磁盘相关命令
以下为磁盘初始化流程和涉及的命令: parted -s /dev/sde mklabel gpt parted -a opt /dev/sde mkpart primary ext4 1 100% mkfs.ext4 -F /dev/sde1 tune2fs -r 5242880 /dev/sde1 #blkid确定sde UUID,更新到fstab后可以 mount -a 若想确定有哪些进程占用磁盘,然后kill掉异常经常,那么可以使用lsof 磁盘位置 lsof /dev/sde
-
更改系统时区方法
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 设置 ubuntu 和 windows 双系统时间同步方法(避免windows和ubuntu 8小时时差) timedatectl set-local-rtc 1
-
查看系统硬件信息
dmidecode 可以查看系统硬件详细信息,若想查看指定硬件信息,那么可以通过 grep -A10 Memory 或 CPU 的方式来查看 dmidecode | grep -A10 "Memory Device"
-
find 命令
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们: $ find logs/ -type f -mtime +7 -exec rm -f {} \; 在/ l o g s目录中查找更改时间在7日以内的文件并删除它们: $ find logs/ -type f -mtime -7 -exec rm -f {} \;
-
top 命令
top 命令后,输入大写P对cpu排序,输入大写M对内存排序 若需交互性能更好的工具,可以使用htop
-
查看 inode 使用情况
df -i 查看磁盘是有分区inode使用情况, du --inodes 可以查看指定目录inode使用情况 du --inodes /var/* du --max-depth=1 --inodes /var/lib/docker/overlay2/*
-
linux下常见的关机重启操作
poweroff 关机 reboot 重启 shutdown -r now 关机后重启 shutdown -h now 关机后不重启 shutdown -r +10 10分钟后重启 shutdown -r 10:00 10点钟重启 shutdown -h +10 10分钟后关机 shutdown -h 10:00 10点钟关机
-
bash profile介绍
.bash_profile 类似于编程中的构造函数,当登录shell时,shell会寻找该文件做环境初始化。 .bashrc 是在bash环境时.bash_profile的替补。 .bash_logout 类似于编程中的析构函数,当登录shell退出时,shell会寻找该文件,并按其指示办事。 /etc/profile是系统文件,对系统下全体用户起作用
-
常用文本查看方法
tail -10 fname head -10 fname sed -n '5,10p' fname 输出5-10行内容 tac逆序输出文本内容 rev逆序输出字符串
-
系统属性查看
(a)lsb_release -a 查看系统版本 (b)cat /etc/issue 系统版本 (c)cat /proc/version 系统相关信息 (d)uname -a
-
文件大小数量相关操作
ls -l filename | awk '{print $5}' du -b filename | awk '{print $1}' wc -c filename | awk '{print $1}' wc -c < filename stat -c "%s" filename 以上方法都可以查看filename的大小,单位为bit ls -Rl|grep '^-'|wc -l 统计当前目录下文件数量 ls -Rl|grep '^d'|wc -l 统计当前目录下文件夹数量
-
下载系统常见命令源码方法
步骤:whereis '命令' -> dpkg -S '命令绝对路径' -> apt-get source '上一步中命令的包' 下载ls命令源码流程如下: $ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz $ dpkg -S /usr/bin/ls coreutils: /usr/bin/ls $ apt source coreutils Reading package lists... Done Need to get 6,022 kB of source archives. Get:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble/main coreutils 9.4-3ubuntu6 (dsc) [2,022 B] Get:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble/main coreutils 9.4-3ubuntu6 (tar) [5,979 kB] Get:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu noble/main coreutils 9.4-3ubuntu6 (diff) [40.5 kB] Fetched 6,022 kB in 5s (1,259 kB/s) dpkg-source: info: extracting coreutils in coreutils-9.4 dpkg-source: info: unpacking coreutils_9.4.orig.tar.xz ...... dpkg-source: info: applying tail-fix-tailing-sysfs-files-where-PAGE_SIZE-BUFSIZ.patch dpkg-source: info: applying CVE-2024-0684.patch 若出现报错: E: You must put some 'deb-src' URIs in your sources.list 解决方法: 去掉 /etc/apt/sources.list 中对deb-src的注释,然后重新apt update即可 ```
2 专业软件命令
- iftop 查看网卡流量
apt-get install iftop iftop -i wlp4s0(ifconfig 查看的网络接口名称)
- sar 命令
apt install sysstat sar 是一个功能齐全的系统工具,可以用来收集查看 CPU、内存、IO 、磁盘、网络等信息 sar -A 可以查看所有的信息
- Linux常见压缩命令
01-.tar格式 解包:$ tar xvf FileName.tar 打包:$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩!) 02-.gz格式 解压1:$ gunzip FileName.gz 解压2:$ gzip -d FileName.gz 压 缩:$ gzip FileName 03-.tar.gz格式 解压:$ tar zxvf FileName.tar.gz 压缩:$ tar zcvf FileName.tar.gz DirName 04-.bz2格式 解压1:$ bzip2 -d FileName.bz2 解压2:$ bunzip2 FileName.bz2 压 缩: $ bzip2 -z FileName 05-.tar.bz2格式 解压:$ tar jxvf FileName.tar.bz2 压缩:$ tar jcvf FileName.tar.bz2 DirName 06-.bz格式 解压1:$ bzip2 -d FileName.bz 解压2:$ bunzip2 FileName.bz 07-.tar.bz格式 解压:$ tar jxvf FileName.tar.bz 08-.Z格式 解压:$ uncompress FileName.Z 压缩:$ compress FileName 09-.tar.Z格式 解压:$ tar Zxvf FileName.tar.Z 压缩:$ tar Zcvf FileName.tar.Z DirName 10-.tgz格式 解压:$ tar zxvf FileName.tgz 11-.tar.tgz格式 解压:$ tar zxvf FileName.tar.tgz 压缩:$ tar zcvf FileName.tar.tgz FileName 12-.zip格式 解压:$ unzip FileName.zip 压缩:$ zip FileName.zip DirName 13-.lha格式 解压:$ lha -e FileName.lha 压缩:$ lha -a FileName.lha FileName 14-.rar格式 解压:$ unrar x FileName.rar 其中x表示解压到文件夹,若用e则解药到但前路径下 压缩:$ rar e FileName.rar 15-.tar.xz 解压: 方法一:需要用到两步命令,首先利用 xz-utils 的 xz 命令将 FileName.tar.xz 解压为 FileName.tar,其次用 tar 命令将 FileName.tar 完全解压。 xz -d FileName.tar.xz tar -xf FileName.tar 方法二(推荐):tar -Jxf FileName.tar.xz 压缩: 方法一:也是用到两步命令,首先利用 tar 命令将 FileName 文件夹打包成 FileName.tar,其次用 xz-utils 的 xz 命令将 FileName.tar 压缩成 FileName.tar.xz。 tar -cf FileName.tar FileName/ xz -z FileName.tar 方法二(推荐):tar -Jcf FileName.tar.xz FileName/
- LVM扩容操作
lsblk 查看发现磁盘只分了50%lsblk lvdisplay lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv df -h|grep -v docker|grep -v kubelet|grep -v tmpfs resize2fs /dev/ubuntu-vg/ubuntu-lv
lvdisplay 查看磁盘信息
lvextend 来扩大逻辑盘大小
resize2fs 来实际扩大磁盘大小 - curl 命令输出为 json 格式
使用 python 的json.tool curl your_web.com |python3 -m json.tool 使用 jq命令,需要 apt install jq curl your_web.com |jq
3 常见错误处理
- 如何开启cron执行日志
默认情况下 cron 是没有开启执行日志,会导致用户不知道crontab 为何执行失败; 若需要开启 crontab 执行日志,那么需要注释掉 /etc/rsyslog.d/50-default.conf 中 cron* 前面的 # , 然后重启 rsyslog cron 服务 systemctl restart rsyslog systemctl restart cron
- 执行 ansible-playbook 报错 Using a SSH password instead of a key is not possible
笔者曾经执行命令报错 命令: ansible-playbook /data/ansible/ecs_init.yml -i /data/workOrderId/131/ansible-hosts -u root 报错: fatal: [172.22.0.110]: FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."} 解决方法: vim /etc/ansible/ansible.cfg host_key_checking = False # 去掉注释
- man 命令报错 Bad system call (core dumped)
最近执行man命令,报错如下: man: preconv: Bad system call (core dumped) man: tbl: Bad system call (core dumped) man: nroff: Bad system call (core dumped) 解决方法: 设置 MAN_DISABLE_SECCOMP=1 ,可以直接在命令行设置,也可以 export MAN_DISABLE_SECCOMP=1 到环境变量中 参考 [linux man手册返回错误 man: command exited with status 159](https://blog.youkuaiyun.com/weilin731/article/details/120646356)
4 说明
笔者使用的系统主要为ubuntu 18.04 server版本、ubuntu 22.04 desktop、ubuntu 23.10 desktop版本。
一般情况下两者都可以使用,特殊情况下会注明系统版本。