CentOS常用操作命令

372 阅读1分钟

查找大文件 ls -lh $(find / -type f -size +100M)

通过文件名称查找 find / -name *nginx.*

通过文件夹名称查找 find / -type d -name *nginx.*

查询字符串在哪个文件 grep -r 'abs' /usr/

查询指定路径,中文件名为XX并包含XX的文件 find ./ -type f -name "docker-compose.yml" -execdir grep -H 'huzhihui' '{}' +

文件字符串替换|支持正则 sed 's/ active: .*/ active: pro-docker/' application.yml

批量杀死进程 ps -ef|grep check_os.sh | grep -v grep | awk '{print $2}' | xargs kill -9

查找指定文件夹下同名文件并输出显示 find "$folder" -type f -printf "%f\n" | sort | uniq -d

测试磁盘写入速度 time dd if=/dev/zero of=/测试磁盘路径/wtest.dbf bs=8k count=100000 oflag=sync

测试磁盘读取速度 time dd if=/测试磁盘路径/rtest.dbf of=/dev/null bs=8k count=100000 iflag=sync

测试磁盘读写速度 time dd if=/测试磁盘路径/rtest.dbf of=/测试磁盘路径/wtest.dbf bs=8k count=100000 oflag=direct iflag=sync

dd命令测试硬盘读写和内存读写速度

  • 测硬盘的读写速度:dd if=/dev/zero of=file bs=1M count=1024

  • 测内存读写速度: dd if=/dev/zero of=/dev/null bs=1M count=1024

更新系统时间

# 设置localtime 
cp -r /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置硬件时钟调整为与本地时钟一致
timedatectl set-local-rtc 1
#设置时区为上海
timedatectl set-timezone Asia/Shanghai

#安装ntpdate
yum -y install ntpdate
#同步时间
ntpdate -u  pool.ntp.org
#同步完成后,date命令查看时间是否正确
date

更换yum源

#备份源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载源
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
#更新
yum makecache
yum -y update

java环境变量配置

#jdk config
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

maven环境变量

#maven config
export MAVEN_HOME=/usr/local/java/apache-maven-3.6.1
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin

node环境变量

#maven config
export NODE_HOME=/usr/local/node/node-v14.15.1-linux-x64
export PATH=${NODE_HOME}/bin:$PATH

自定义命令

vi /etc/bashrc
alias cbd-sms="sh /usr/local/java/sh/cbd-sms.sh"
source /etc/bashrc

基本脚本使用

#!/bin/sh
PROJECT_NAME='frpc'
PROCESS=`ps -ef|grep $PROJECT_NAME|grep -v grep|grep -v PPID|awk '{ print $2}'`
if [ -n "$PROCESS" ]; then
        echo "kill PID=$PROCESS"
        for i in $PROCESS
        do
                echo "Kill the $PROJECT_NAME process [ $i ]"
                kill -9 $i
        done
fi
# 在后台运行该脚本
nohup /usr/local/frp/client/frpc -c /usr/local/frp/client/frpc.ini > /dev/null 2>&1 &

自定义服务

#比如我定义一个frpc的服务
#在该文件夹 /etc/systemd/system/ 创建frpc.service
[Unit]
Description=frpc daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/client/frpc -c /usr/local/frp/client/frpc.ini

[Install]
WantedBy=multi-user.target
#然后就可以运行该服务了
systemctl start frpc
systemctl enable frpc
systemctl stop frpc
systemctl restart frpc

获取shell执行文件的绝对路径

ABSOLUTE_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
echo ${ABSOLUTE_PATH}

常用数组判断操作

  • 主要利用了grep和管道传输的特性
#!/bin/sh
users=("a" "b" "c");
echo ${users[@]}

if [ $(echo "${users[@]}" | grep -wq "a" &&  echo "Yes" || echo "No") = "Yes" ]
then
  echo "Yes"
fi

echo "${users[@]}" | grep -wq "a" &&  echo "Yes" || echo "No"

新增用户

#添加用户组k8s
groupadd dev
#添加k8s用户,并归属于dev组
useradd -g dev k8s

#将一个用户添加到用户组中,千万不能直接用:
usermod -G groupA

#这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。应该用 加上 -a 选项
usermod -a -G groupA user


#给k8s用户改密码
passwd k8s

#权限赋予
chmod -v u+w /etc/sudoers
 
#打开sudoers文件添加
#表示dev组下所有用户都可以执行sudo,且不用密码
%dev  ALL=(ALL) NOPASSWD: ALL
#表示libb用户可以执行sudo,且不用密码
k8s  ALL=(ALL) NOPASSWD: ALL
#表示libb用户可以执行sudo
k8s  ALL=(ALL) ALL
 
#最后取消sudoers 文件可写权限
chmod -v u-w /etc/sudoers