Shell

本文最后更新于 2025年8月15日 凌晨

RedHat/Cent

更新

1
yum makecache   #更新软件包源
1
yum -y update   #升级所有包,同时也升级软件和系统内核
1
yum -y upgrade  #升级所有包,不升级软件和系统内核

卸载软件

1
yum erase       # 卸载软件
1
rpm -e --nodeps # 卸载软件,卸载依赖

安装web

php+mysql+httpd

1
yum install -y  httpd php-devel php-fpm php-mysql php-gd php mariadb mariadb-server

Debian/Ubuntu

更新系统

1
apt update             #更新源
1
apt -y upgrade         #更新软件,不更新依赖
1
apt -y full-upgrade    #更新软件,同时更新依赖
1
apt clean              #清除无用安装包

更新系统一键梭哈

1
apt update && apt -y full-upgrade && apt clean

解决问题:(N: 无法安全地用该源进行更新,所以默认禁用该源。)

1
rm -rf /etc/apt/sources.list.d

单独升级某个软件包

1
apt install --only-upgrade <package_name>

卸载软件

1
apt remove  # 卸载
1
apt --purge autoremove  # 卸载软件,卸载依赖
1
dpkg -r     # 卸载
1
dpkg -P     # 彻底卸载,包括配置文件等

web环境安装

apache2+php+mysql

1
apt -y install apache2 libapache2-mod-php mysql-server php-mysql php

nginx+php+mysql

1
apt -y install nginx mysql-server php-mysql php-fpm php

systemctl

1
2
3
4
启动服务:systemctl start <service_name>
关闭服务:systemctl stop <service_name>
重启服务:systemctl restart <service_name>
显示服务的状态:systemctl status <service_name>
1
2
3
4
在开机时启用服务:systemctl enable <service_name>
在开机时禁用服务:systemctl disable <service_name>
查看开机启动的服务单元:systemctl list-unit-files
查看开机启动失败的服务列表:systemctl --failed
1
2
3
列出所有服务:systemctl list-units
列出所有已加载的服务单元:systemctl list-units --type=service
列出所有服务单元文件及其启用状态:systemctl list-unit-files --type=service

磁盘

1
fdisk -l                    # 查看磁盘情况
1
mkfs.ext4 /dev/sda1         # 以ext4格式格式化分区
1
lsblk                       # 查看磁盘结构
1
lsblk -f                    # 查看文件系统类型
1
df -h                       # 查看挂载情况
1
df -T                       # 查看文件系统类型
1
du -sh                      # 查看目录占用空间大小

磁盘扩容

先进行分区扩容,再进行文件系统扩容。如果无法扩容,考虑是不是有其它分区在中间进行了截断。(gparted图形化分区管理工具)

磁盘分区扩容

1
parted /dev/sda
1
(parted) resizepart 1 200GB     # 扩大分区1大小为200GB
1
(parted) resizepart 1 100%      # 扩大分区1大小为100%
1
(parted) quit

文件系统扩容

1
resize2fs /dev/sda1  # 用于扩容ext2/ext3/ext4文件系统
1
xfs_growfs /data  # 用于扩容XFS文件系统

LVM扩容

检查逻辑卷情况

1
lvdisplay /dev/centos/root

删除无用逻辑卷

1
lvremove pve/data

确认剩余空间

1
pvs

如果显示的 FREE 列为空,说明没有剩余空间。

LVM 识别 /dev/sda2 上的所有剩余空间。

1
pvresize /dev/sda2

逻辑卷扩容

1
lvextend -l +100%FREE /dev/centos/root

最后进行文件系统扩容

1
resize2fs /dev/sda1  # 用于扩容ext2/ext3/ext4文件系统
1
xfs_growfs /data  # 用于扩容XFS文件系统

挂载

smb挂载

1
mount -t cifs //服务器IP/共享名 /mnt/smb_share -o username=用户名,password=密码,uid=1000,gid=1000,dir_mode=0766,file_mode=0666,vers=3.0

开机自挂载磁盘

1
vim /etc/fstab
1
2
3
4
5
# 挂载硬盘
/dev/sdb1 /data ext4 defaults 0 0

# smb挂载
//服务器IP/共享名 /mnt/smb cifs username=账户,password=密码,uid=1000,gid=1000,dir_mode=0766,file_mode=0666,iocharset=utf8,vers=3.0,x-systemd.requires=network-online.target 0 0

测试自动挂载是否成功

1
sudo mount -a

文件处理

  • 使用tar批量解压当前命令下的*.tar.gz后缀的文件
1
for i in $(ls *.tar.gz);do tar zxvf $i;done
  • 复制大文件(断点续传)
    1
    rsync -av --append-verify --progress /path/to/largefile user@host:/dest/path/

-a:递归复制,包括子目录和文件。
-v:显示复制过程。
--append-verify:断点续传,并在结束后校验文件完整性。
--progress:显示复制进度。

  • 临时修改时间格式:(方便观察文件改动时间)

方法 1:设置环境变量(推荐简洁)

1
export TIME_STYLE=long-iso

方法 2:定义别名(更自定义)

1
alias ll='ls -l --time-style="+%Y/%m/%d %H:%M:%S"'

shell脚本报错:$’\r’: command not found

原因

可能是在 Windows 上写的这个脚本,或者从 Windows 系统复制过来的(例如用记事本编辑过),导致行尾多了 \r

Bash 在解析时把 \r 当成命令的一部分,就出现了 $'\r': command not found 这样的提示。

解决办法

在 Linux 里执行以下命令去掉行尾的 \r

1
sed -i 's/\r$//' <脚本文件名>

解除root用户登录ssh限制

1
sed -i 's/^#\?\s*PermitRootLogin\s\+.*/PermitRootLogin yes/' /etc/ssh/sshd_config || sed -i -E 's/^\s*#?\s*PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config

cpu性能模式配置

安装cpufrequtils

1
apt install cpufrequtils

查看当前cpu的运行频率

1
2
3
cpufreq-info

cpufreq-info | grep "current CPU frequency"

切换到性能模式

1
cpufreq-set -r -g performance

cpu性能模式介绍

  1. performance :性能模式会将 CPU 频率保持在最高可用频率,以提供最佳的性能。这是在需要最大处理能力时选择的模式。可以触发睿频。

  2. powersave :节能模式会将 CPU 频率降低到最低,以节省电力。这在系统需要长时间运行而且对性能要求不高时是一个不错的选择。

  3. ondemand :按需模式会根据系统负载动态调整 CPU 频率。当负载较低时,CPU 频率会降低以节省电力,而在负载增加时会提高频率以提供更好的响应性能。但是不会触发睿频。

  4. conservative :保守模式类似于按需模式,但是频率调整更加平滑。它会尽量避免频繁地变更频率,以减少对性能的影响。

列出当前策略模式

1
cpufreq-info | grep "governor"

代理

临时代理(仅当前shell下生效)

开启代理

http协议

1
2
export http_proxy=http://10.0.0.100:10808
export https_proxy=http://10.0.0.100:10808

socks协议

1
2
export http_proxy=socks5://10.0.0.100:10808
export https_proxy=socks5://10.0.0.100:10808

取消代理

1
2
unset http_proxy
unset https_proxy

配置永久代理

1
vi /etc/profile
1
2
3
4
5
export http_proxy=http://ip:port

export https_proxy=http://ip:port

export https_proxy=socks5://ip:port
1
source /etc/profile