查看系统参数
#查看系统版本
[root@1519e10e029c /]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (AltArch)
[root@1519e10e029c /]# uname
Linux
#查看内存版本
[root@1519e10e029c /]# uname -r
5.10.47-linuxkit
#查看机器架构
[root@1519e10e029c /]# uname -m
aarch64
#其他参数详见命令详情
[root@1519e10e029c /]# uname --help
Usage: uname [OPTION]...
Print certain system information. With no OPTION, same as -s.
-a, --all print all information, in the following order,
except omit -p and -i if unknown:
-s, --kernel-name print the kernel name
-n, --nodename print the network node hostname
-r, --kernel-release print the kernel release
-v, --kernel-version print the kernel version
-m, --machine print the machine hardware name
-p, --processor print the processor type or "unknown"
-i, --hardware-platform print the hardware platform or "unknown"
-o, --operating-system print the operating system
--help display this help and exit
--version output version information and exit
解压、压缩命令
-
tar命令
将data.tar.gz解压到data文件夹
#将data文件夹压缩到data.tar.gz tar -zcvf data.tar.gz data/ #解压data.tar.gz到当前目录下名称为data tar -zxvf data.tar.gz
-
unzip命令
#解压到当前文件夹下 unzip data.zip #解压到data文件夹下 unzip -t data data.zip
-
rar命令
解压.rar文件,一般不常用rar包,因为很多系统没装rar命令
#将/etc 目录压缩为etc.rar 命令为: rar a etc.rar /etc #将etc.rar 解压 命令为: rar x etc.rar unrar -e etc.tar
nohup命令启动应用
应用启动,日志不输出到控制台
-
语法格式:
nohup Command [ Arg … ] [ & ]
-
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
-
示例:
执行test二进制文件,将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向,直接忽略
末尾增加 &表示在后台运行
nohup ./test 1>/dev/null 2>&1 &
-
若需要程序/脚本输出内容到指定文件,则执行:
nohup ./test >test.log 2>&1 &
-
若没有制定输出到文件,则默认会放到当前目录下的nohup.out这个文件中去
nohup ./test 2>&1 & #或者 nohup ./test &
解析
jq解析
-
使用jq/gojq解析curl的返回结果
curl -s -q http://127.0.0.1:9001/program/list | ./gojq -r '.[1].name'
xargs过滤
-
使用xargs 命令解析结果:
当我们在执行命令的时候,我们往往需要在返回的结果集里获取我们需要的目标值,这个时候我们可以用xrgs过滤数据
如:
# ip -br link show p1p1 p1p1 UP b0:7b:25:1f:3d:b2 <BROADCAST,MULTICAST,UP,LOWER_UP>
而某些情况下,我们只需要mac地址或者mac地址及网卡状态,则可以这样:
# ip -br link show p1p1 | xargs |awk '{print $2" "$3}' UP b0:7b:25:1f:3d:b2
-
注:grep提取行,cut和awk提取列
cut命令使用:提取内存的 total,used和free值,并保存到一个文件中。
$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt $ cat memory.txt 985 86 234
-
网络
-
网络相关
- 查看网关 route -n
- 查看子网掩码 ifconfig
- 查看IP ip a 或ifconfig
- jnettop查看网络流量
ssh
免密登录:
(事实证明根本记不住命令,我已经是第n遍返回来看了)
-
本地客户端生成公私钥:(一路回车默认即可)
ssh-keygen
-
上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.44
如果带端口的机器,输入-P port即可,如:
ssh-copy-id -p 2021 -i ~/.ssh/id_rsa.pub root@192.168.10.44
-
测试免密登录
ssh root@192.168.10.44
删除指纹:
如果有删除登录指纹的需求,可以执行命令:
ssh-keygen -R 192.168.8.1
删除免密登录的密钥:
linux清理磁盘
-
查找大文件
find . -type f -size +800M
只需要查找超过800M大小文件,并显示查找出来文件的具体大小
find . -type f -size +800M -print0 | xargs -0 du -h
查看大文件的详细信息
find . -type f -size +800M -print0 | xargs -0 ls -l
对查找结果按照文件大小做一个排序(du -hm表示按照M为单位排序)
find . -type f -size +800M -print0 | xargs -0 du -hm | sort -nr
-
查找大目录
du -h --max-depth=1
查看二级目录
du -hm --max-depth=2 | sort -n
查看当前目录下的文件大小列表
ls -lh
ls -lrt 命令的作用
ls 命令用于列出目录的内容,lrt 是其三个不同选项的组合:
- l: 这是一个很长的内容列表,它在每一行里面显示一个文件的其他信息,比如权限,拥有者,大小,创建时间等;
- t: 这个选项将输出列表按照时间排序;
- r: 它将ls命令的输出进行倒序排序。
#根据字母排序 ls -l #根据时间排序 ls -lt # 根据修改时间、创建时间、字母排序 ls -lrt
查看最大的12个文件夹
du -hm --max-depth=2 | sort -nr | head -12
注:当磁盘100%后,删除大文件,再次查询有可能还是100%因为进程没有释放,这时候重启进程即可,当然,事情往往不这么简单,如果删除的是多个大文件,我们并不知道涉及到哪些进程,这时候查找资料发现答案:
在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。
遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法收回这些文件占用的空间。
原文链接:https://blog.csdn.net/langhailove_2008/article/details/79501129
执行命令
lsof -n | grep deleted
执行kill -9 命令,kill掉列出的对应进程即可
-
磁盘使用率相关命令
df -hP|awk 'NR>1 && $5 > 20' /dev/mapper/centos-root 17G 14G 3.3G 81% / df -Th |grep -E $ | awk '{ print $3" "$5}' 容量 可用 16G 16G 16G 16G 16G 16G
vim命令
-
Vim 多行注释 1 1. 首先按 esc 进入命令行模式下,按下 Ctrl + v ,进入列(也叫区块)模式; 2 2. 在行首使用上下键选择需要注释的多行; 3 3. 按下键盘(大写) “I” 键,进入插入模式; 4 4. 然后输入注释符( “//"、"#” 等); 5 5. 最后按下 “Esc” 键
-
Vim取消多行注释
ctrl+v 选中,点击d即可
-
删除
-
删除字母’d’之后的字符
- fdde
- 多个’d' fd;de
-
删除单行
- dd
-
删除所有行
按一下ESC键,确保退出编辑模式
按两次键盘上面的g键,让光标移动到文本的首行
然后按键盘上面的d和G键。其中d键是小写,G键要切换成大写的。
-
删除带某个关键字的行
示例:删除包含text关键字的行 :g/text/d
-
删除多行
- 首先在命令模式下,输入“:set nu”显示行号;
- 通过行号确定你要删除的行;
- 命令输入“:32,65d”,回车键,32-65行就被删除了,如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
-
-
vim替换
- 示例::%s#/root/data#/root/test#g
-
光标控制
-
跳转到行末 $
-
跳到文本的最后一行:按“G”,即“shift+g”
-
跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
-
跳到第一行的第一个字符:先按两次“g”,
-
跳转到当前行的第一个字符:在当前行按“0”或者按“^”,即“shift+6”。
-
vi加密。进入vi,输入":X" 之后按回车就提示你输入两次密码。之后:wq 保存退出。再次进入时就提示你输入密码了。如果你不想要密码了,就:X 提示你输入密码时连续按两次回车
-
关闭防火墙
-
查看防火墙状态
systemctl status firewalld.service
-
关闭防火墙
systemctl stop firewalld.service
-
启动防火墙
systemctl start firewalld.service
-
执行开机禁用防火墙自启命令
systemctl disable firewalld.service
-
防火墙随系统开启启动
systemctl enable firewalld.service
-
service docker restart
-
放开单个防火墙端口
# 打开单个端口方法 firewall-cmd --zone=public --add-port=80/tcp --permanent # 打开多个端口方法 firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent # 防火墙重载配置(修改完要执行这个reload才能生效) firewall-cmd --reload # 查看开启端口 netstat -ntlp 或:firewall-cmd --list-ports # 关闭端口命令 firewall-cmd --zone=public --remove-port=80/tcp --permanent # 查看端口是否打开 firewall-cmd --zone=public --query-port=80/tcp
关闭selinux
-
/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: enabled
-
getenforce ##也可以用这个命令检查
-
临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
-
修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
-
docker 镜像移除(把为none的移除,注意docker rmi前后空格)
- docker images | grep none | awk ‘{print " docker rmi “$3}’ | bash
其他
-
upx安装
wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/ucl-1.03-2.el7.rf.x86_64.rpm rpm -Uvh ucl-1.03-2.el7.rf.x86_64.rpm yum install ucl wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/upx-3.91-1.el7.rf.x86_64.rpm rpm -Uvh upx-3.91-1.el7.rf.x86_64.rpm yum install upx
-
yum install gcc gcc-c++ -y wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz tar xvf Python-3.7.2.tgz cd Python-3.7.2/ ./configure make make install python3-V
-
centos安装打印机驱动
yum install hplip
-
linux 桌面版快捷方式
-
最小化窗口
win + H
-
退出当前窗口
alt+F4
-
-
重启一个服务
改完配置文件后,需要重启一个service,这时候,执行以下命令
systemctl daemon-reload systemctl restart xxx.service #查看 systemctl status xxx.service
-
安装jdk
-
查看云端目前支持安装的jdk版本
yum search java|grep jdk
-
选择JDK版本,并安装
yum install -y java-1.8.0-openjdk
-
检查是否安装成功
java -version
-
查看JDK的安装目录
find / -name 'java'
-
修改IP为静态IP的方式
场景:在windows上装虚拟机,修改为静态IP,在mac上访问
- 虚拟机修改为桥接模式
mac替换brew源
在国内,使用brew极慢. 因为它需要访问国外的一些服务器.
解决方法是使用国内的镜像站.
- 如果是首次安装:
curl https://raw.githubusercontent.com/Homebrew/install/master/install.sh > install-brew.sh
然后,在下载的文件中, 修改BREW_REPO为:
BREW_REPO="https://mirrors.ustc.edu.cn/brew.git"
最后, 运行:
HOMEBREW_CORE_GIT_REMOTE=https://mirrors.ustc.edu.cn/homebrew-core.git bash install-brew.sh
- 如果是已经安装了brew, 可以这样替换镜像站:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
替换后, 就可以正常使用brew了.
文件夹权限:
drwxr-xr-x 即 chmod 755级别权限
drwxrwxrwx即chmod 777级别权限
文件夹的用户权限:
root用户将文件夹赋予权限给普通用户:
chown -R username filepath
#比如:chown -R username /usr/loacal/nginx
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
场景:docker使用roo用户安装的,需要给mysql文件配置root权限,并且读写权限扩大到755,否则会出现无法连接msyql的问题,里面外面都连不上
磁盘挂载
# 注意:最好在挂载前备份挂载目录的数据到其他路径或机器下。不要嫌麻烦,cp命令很快的!
fdisk /dev/vda
# 依次按 n(新建)、(e)默认回车、默认回车、默认回车、最后w保存,新建的分区为/dev/vda4
# 此时新建的分区在df -h能显示,lsblk看不到,格式化分区也会失败,需要执行partprobe命令
partprobe /dev/vda
mkfs.ext4 /dev/vda4
# 等待格式化完成后,执行mout命令挂载,将此分区挂载到 /test目录
mount /dev/vda4 /test
# 分区信息写入配置文件,保证开机自启
echo /dev/sdb1 /data ext4 defaults 0 0 >> /etc/fstab