Centos7 常用操作

1、开放防火墙端口

firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=7000-40000/tcp --permanent
firewall-cmd --reload

2、docker查看每个容器的ip

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

 3、开放当前服务器所有监听的端口

#!/bin/bash

# 获取所有TCP或UDP端口
ports=$(netstat -npltu | awk '/^tcp/ || /^udp/ {print $4}' | awk -F':' '{print $NF}' | sort -n | uniq)

# 开放所有TCP或UDP端口
for port in $ports
do
  # 使用firewall-cmd命令开放tcp端口
  firewall-cmd --zone=public --add-port=$port/tcp --permanent
  # 使用firewall-cmd命令开放tcp端口
  firewall-cmd --zone=public --add-port=$port/udp --permanent
done 
# 重新加载防火墙配置
firewall
-cmd --reload

 4、if命令语句整成一行

if  [ -e $dist_dir/$dist_name ]; then mv $dist_dir/$dist_name ${dist_dir}/${dist_name}-$(date +'%Y-%m-%d_%H:%M:%S'); fi

5、rsync命令

# 从服务端同步数据到本地
rsync -avzP -e "ssh -p 1130" myuser@10.10.10.15:backup ./


-v, –verbose详细模式输出。–verbose 复杂的输出信息

-a, –archive归档模式,表示以递归方式传输文件,并保持所有文件属性不变。–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等

-r:–recursive 复制所有下面的资料,递归处理。
-z, –compress对备份的文件在传输时进行压缩处理。 –delete:删除那些DST中存在而在SRC中没有的文件。
-P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。

-e: 指定ssh的端口

 6、只下载rpm包不安装

#只下载rpm包不安装
yumdownloader --downloadonly --destdir=/opt/test openssh-clients-7.4p1-22.el7_9.x86_64

#yum命令的参数有很多,其中就有只是下载而不需要安装的命令,并且也会自动解决依赖;通常和 --downloaddir 参数一起使用。
#说明:如果该服务器已经安装了需要下载的软件包,那么使用 install下载就不行,可以使用reinstall下载。 放心(不会真的安装和重新安装,因为后面加了 --downloadonly,表明只是下载。

yum install --downloadonly --downloaddir=/opt openssh-clients
yum reinstall --downloadonly --downloaddir=/opt openssh-clients

最保险的方法:

  要下载 tcpdump 及其所有依赖项的 RPM 包,您可以使用 yumdownloader 命令结合 yum deplist 命令来实现。以下是具体步骤:

  1. 首先,使用 yum deplist 命令查看 tcpdump 的所有依赖项:

    shellCopy Code
    yum deplist tcpdump
    

    这将列出 tcpdump 的所有依赖项及其相关信息。

  2. 然后,使用 yumdownloader 命令结合 grepawk 命令来批量下载这些依赖项的 RPM 包到指定目录。假设您要将这些 RPM 包下载到名为 tcpdump-deps 的目录中,可以使用以下命令:

    shellCopy Code
    mkdir tcpdump-deps
    yum deplist tcpdump | grep provider | awk '{print $2}' | xargs -I {} yumdownloader --destdir=./tcpdump-deps {}
    

    这将下载 tcpdump 及其所有依赖项的 RPM 包到当前目录下的 tcpdump-deps 目录中


 7、查看程序有没有用到多线程

1.使用 ps 命令:使用 ps -eLf | grep <程序名> 命令可以列出系统上所有进程的线程信息,并通过 grep 过滤指定程序的线程信息

#-L:显示每个进程的线程信息。
ps -eLf | grep redis

2.使用 pstree 命令:假设 myprogram 的父进程PID为 12345,运行 pstree -p 12345 命令可以显示 myprogram 及其所有子进程的树状结构。通过观察树状结构中的进程数量,可以判断程序是否使用了多进程。

 8、查看某个进程运行了多久

ps -eo pid,comm,etime  | grep mysql

 9、将一个命令所有输出都写入my.log文件

在Linux中,如果你想要将一个命令的所有输出(标准输出和标准错误)写入到一个文件中,例如my.log,你可以使用重定向操作符。这里有两种主要的方式来实现:

使用>和2>&1来重定向输出:

这个方法会将标准输出(stdout)重定向到my.log文件,然后将标准错误(stderr)重定向到标准输出(这意味着错误信息也会被写入到my.log中)。

假设你的命令是your_command,那么相应的命令行语句就是:

your_command >my.log 2>&1
这里,>操作符负责将your_command的标准输出重定向到my.log,而2>&1确保标准错误也被重定向到同一个地方。

使用&>来重定向输出(较新的bash版本中):

在一些较新版本的bash中,你可以使用&>作为一个更简洁的方式来同时重定向标准输出和标准错误。

使用相同的命令your_command,相应的命令行语句就是:

your_command &>my.log
这两种方法都会覆盖my.log文件中原有的内容。如果你希望保留my.log文件中原有的内容,并将新的输出追加到文件末尾,可以使用>>和2>>&1(对于方法1)或者&>>(对于方法2)来代替。例如,使用第一种方法的追加模式:

your_command >>my.log 2>&1
或者,使用第二种方法的追加模式:

your_command &>>my.log
选择哪种方式取决于你的具体需求和你使用的shell环境。

 

13、删除一个目录下的旧文件,只保留最新的2个文件。

#删除超过2个的sql
backup_num=$(ls -1 /home/147-wiki-backup/sql_backup/ | wc -l)
if [ ${backup_num} -gt 2 ]
then
        cd /home/147-wiki-backup/sql_backup/ && ls -t | awk 'NR>2' | xargs rm -rf
fi

 14、释放内存

sync && echo 3 > /proc/sys/vm/drop_caches

 15、查某进程的ppid

#! /bin/bash
  
pid=$1
ppid=$(cat /proc/${pid}/status | grep "PPid" | awk -F ' '  '{print $2}')
echo $ppid
while [ $ppid != "1" ]
do
    tmp_pid=$ppid
    tmp_ppid=$(cat /proc/${tmp_pid}/status | grep "PPid" | awk -F ' '  '{print $2}')
    ppid=$tmp_ppid
    echo $ppid
done

 16、查看当前命令下的所有隐藏目录空间各个大小总和

du -sh .[^.]* */

 

posted @ 2023-08-16 23:51  苦逼yw  阅读(50)  评论(0编辑  收藏  举报