1. 前言
本文记录linux中系统管理时常用的命令,备忘。
2. 查看硬件配置
2.1. 查看服务器型号
1 2
| dmidecode dmidecode | grep "System Information" -A16
|
2.2. 查看CPU
物理CPU数(physical id):主板上实际插入的cpu数量,可以数不重复的 physical id 有几个。
CPU核心数(cpu cores):单块CPU上面能处理数据的芯片组的数量,如双核、四核等
逻辑CPU数:一般情况下,逻辑CPU=物理CPU个数×每颗核数;如果开启了超线程技术,逻辑CPU=物理CPU个数×每颗核数x2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| lscpu cat /proc/cpuinfo
lscpu | grep -i "Architecture" | wc -l cat /proc/cpuinfo | grep "physical id" |sort | uniq | wc -l
lscpu | grep "per socket" cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l
lscpu | grep -e "per socket" -e "per core" cat /proc/cpuinfo | grep -e "cpu cores" -e "siblings" | sort | uniq
lscpu | grep -i "CPU(s):" cat /proc/cpuinfo | grep "processor" | wc -l
|
lscpu查看到的Core(s) per socket
表示这颗物理CPU有多少核心,Thread(s) per core
表示每个核心能同时处理多少线程。
参考文档:/proc/cpuinfo文件解读(超易理解)
2.3. 查看内存
1 2 3 4
| free -h free -m cat /proc/meminfo
|
2.4. 查看磁盘
2.5. 查看显卡
1 2 3 4
| lspci | grep -i vga lspci | grep -i nvidia lspci -v -s 02:00.0 lshw -numeric -C display
|
2.6. 查看网卡
3. 查看系统信息
3.1. 查看系统版本
1 2 3 4 5
| lsb_release -a cat /etc/issue cat /etc/os-release cat /etc/centos-release hostnamectl
|
3.2. 查看系统位数
1 2 3 4
| uname -a file /bin/ls getconf LONG_BIT hostnamectl
|
3.3. 查看内核版本
3.4. 查看是否是物理机
1 2
| dmidecode -s system-product-name hostnamectl
|
4. 系统配置
4.1. 修改默认shell
1 2 3 4
| echo $SHELL cat /etc/shells which bash chsh -s /bin/bash
|
4.2. 显示颜色
取消 force_color_prompt=yes
的提示。
4.3. 禁止检查邮件
系统经常提示:您在 /var/spool/mail/root 中有新邮件
1 2
| echo "unset MAILCHECK" >> /etc/profile source /etc/profile
|
4.4. 添加用户
1 2
| useradd -m voidking -s /bin/bash passwd voidking
|
4.5. 给用户添加sudo权限
参考文档:《shell命令之sudo》
4.6. 添加用户组
4.7. 添加用户到用户组
1 2
| usermod -G docker -a gitlab-runner usermod -G root -a gitlab-runner
|
4.8. 用户切换用户组
如果一个用户属于多个用户组,可以切换默认用户组。
4.9. 从用户组删除用户
1 2
| gpasswd -d docker gitlab-runner groups gitlab-runner
|
或者直接修改 /etc/group 文件,删除对应行。
4.10. 删除用户
删除用户和用户目录
删除用户,然后删除用户目录
1 2 3
| userdel voidking
find /home/ -nouser | xargs rm -rfv
|
4.11. 切换用户
切换root
切换普通用户
4.12. 修改用户家目录
1 2
| usermod -d /data/voidking voidking usermod -md /data/voidking voidking
|
对于root用户,需要先进入单用户模式,才能进行修改家目录操作。
4.13. 添加字体
查看字体
添加字体
1 2 3 4
| mkdir -p /usr/share/fonts/win/ cd /usr/share/fonts/win/ rz tar -xzvf fonts.tgz
|
添加字体后更新缓存
4.14. 设置临时IP
添加临时IP
1
| ip addr add 192.168.51.20/24 dev em1
|
删除临时IP
1
| ip addr del 192.168.51.20/24 dev em1
|
4.15. 网桥从属网卡
两台主机通过网线直连,并且设置了临时IP后,如果发现互ping不通,那么可以检查下桥接从属网卡配置。
有的时候,一个网桥可能会添加多个从属网卡,从而导致网卡设置了IP但是不通。
从属网卡在网络中起到以下作用:
- 扩展网络端口:通过将多个网卡添加到网桥或交换机上,可以增加网络设备的端口数量,从而连接更多的设备或虚拟机。
- 实现网络聚合:从属网卡可以用于实现网络聚合,将多个物理网卡绑定在一起,提供更高的带宽和冗余。
- 实现冗余和容错:通过将多个从属网卡连接到网桥或交换机上,可以实现冗余路径,当一个路径发生故障时,可以切换到其他路径,提高网络的可靠性和容错性。
- 提供网络隔离:从属网卡可以用于隔离网络流量,将不同类型的流量或不同网络的流量分开处理,增加网络的安全性和性能。
查看网桥信息
1 2 3
| ip addr brctl show bridge link
|
增加网桥从属网卡
1
| bridge link set dev eth2 master br0
|
删除网桥从属网卡
1 2 3
| ip link set dev eth2 down brctl delif br0 eth2 ip link set dev eth2 up
|
4.16. 确定网卡编号和网口对应关系
执行上面的命令后,观察网口,闪烁的那个网口就是网卡编号对应的网口。
4.17. 修改网卡配置
1、查看网卡配置
示例输出如下:
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
| Settings for eth2: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Auto-negotiation: on Port: Twisted Pair PHYAD: 1 Transceiver: internal MDI-X: off (auto) Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes
|
从输出可以看出,网卡支持千兆,但是实际上的速度是百兆。
2、设置网卡千兆全双工
1 2 3
| ethtool -s eth2 speed 1000 duplex full
ethtool -s eth2 speed 1000 duplex full autoneg on
|
如果执行完上面的命令后,主机断网,那么请检查网线是否支持千兆,大概率是网线的问题。
4.18. 修改内核参数
1、查看内核参数,例如
1
| sysctl net.core.rmem_max
|
2、修改内核参数,例如
1
| sysctl -w net.core.rmem_max=2097152
|
3、永久生效修改内核参数
1 2 3
| vim /etc/sysctl.conf
sysctl -p
|
如果用的是其它的配置文件,那么需要指定它,例如
1
| sysctl -p /etc/sysctl.d/mysettings.conf
|
参考文档:Linux 实例常用内核参数介绍
5. 软件安装
5.1. 查看命令属于哪个软件包
1、centos7
1 2
| yum makecache fast yum whatprovides lsb_release
|
2、ubuntu
1 2 3
| apt-get install -y apt-file apt-file update apt-file search ifconfig
|
5.2. 重建软件安装源
centos7
1 2 3 4 5
| cd /etc/yum.repos.d rm -f *.repo scp 192.168.56.101:/etc/yum.repos.d/* . yum clean all yum makecache fast
|
5.3. EPEL源
EPEL(ExtraPackagesforEnterpriseLinux)是基于Fedora的一个项目,为RedHat系的操作系统提供额外的高质量软件包。
1
| yum install epel-release
|
安装epel源之后,可以安装很多原本 No package xxx available 的软件,比如jq:
5.4. 安装指定版本软件
以安装Docker为例,参考文档《Docker入门篇》
6. 问题排查
参考文档:《shell命令之问题排查》
7. Uncategories
7.1. 跟踪系统调用
假设ls执行卡住,可以通过strace命令查看ls具体的执行情况
7.2. 时间和时间戳
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| date
date "+%Y-%m-%d %H:%M:%S"
date "+%s"
microsecond=$(($(date "+%s%N")/1000000))
date -d @1612351314 "+%Y-%m-%d %H:%M:%S"
|
7.3. 还原history
万万没想到,centos4.3的history -c
命令,不止会清除当前登录的操作历史记录,还会清除 .bash_history 中的内容。
如果不小心清除了 .bash_history 中的内容,该怎么办?如果屏幕上还残留着history的历史记录,那么还有得救。
拷贝屏幕上的内容,到 history.txt,假设内容为:
1 2 3
| 244486 2021-01-08 17:35:18 cd haojin 244487 2021-01-08 17:36:01 vim main.py 244488 2021-01-08 17:38:33 python main.py
|
怎么恢复成标准的 .bash_history 格式呢?使用如下脚本:
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/bash
cat /dev/null > bash_history while read line do time=$(echo $line | awk '{print $2" "$3}') cmd=$(echo $line | awk -F " " '{for (i=4;i<=NF;i++)printf("%s ", $i);print ""}') timestamp=$(date -d "$time" +%s) echo "#"$timestamp >> bash_history echo $cmd >> bash_history done < history.txt
|
执行完成,使用 bash_history 替换 .bash_history 即可。