Linux常用命令
作者QQ:67065435 QQ群:669756510
本站内容全部为作者原创,转载请注明出处!
系统信息
开机信息
;显示信息 dmesg ;清空信息 dmesg --read-clear设备信息
dmidecode逻辑设备管理
# 设备概述信息 dmsetup info # 设备详细信息 demsetup ls # 设备状态信息 demsetup status # 设备依赖关系 dmsetup deps # 设备映射信息 dmsetup table # 移除逻辑设备 desetup remove
命令别名
为命令创建删除别名
# 以 ll='ls -l' 为例 # 1. 临时创建别名 alias ll='ls -l' # 2. 临时删除别名 unalias ll # 3. 永久创建别名 alias ll='ls -l' vi ~/.bashrc alias ll='ls -l' ESC :wq source ~/.bashrc # 4. 永久删除别名 unalias ll vi ~/.bashrc # 删除以下行 alias ll='ls -l' ESC :wq source ~/.bashrc
用户管理
- 添加用户并创建密码
# 添加用户 useradd -mk /home/www -s /bin/bash www # 创建密码 sudo passwd www 密码: www 重复密码: www # 删除用户 sudo userdel www
远程连接
- ssh登录服务器
# 修改私钥权限 chmod -R 600 [私钥] ssh [账号]@[IP] -p [端口] -i [私钥] password:********
远程拷贝
scp拷贝文件到远程服务器
# 本地→远程 chmod -R 600 [私钥] scp -P [端口] -i [私钥] -r [本地DIR] [远程USER]@[远程IP]:[远程DIR] password:******** # 远程→本地 chmod -R 600 [私钥] scp -P [端口] -i [私钥] -r [远程USER]@[远程IP]:[远程DIR] [本地DIR] password:********
网络状态
进程占用端口
netstat -lntap|grep [进程名/端口号]显示指定状态的连接列表
netstat -lntap | grep LISTEN netstat -lntap | grep TIME_WAIT netstat -lntap | grep CLOSE_WAIT netstat -lntap | grep ESTABLISHEDLISTEN|TIME_WAIT|CLOSE_WAIT|ESTABLISHED
netstat -lntap|grep -oE 'LISTEN|TIME_WAIT|CLOSE_WAIT|ESTABLISHED'|sort|uniq -c|sort -rnk 1
进程管理
pstree
# 进程树查看 yum -y --nogpgcheck install psmisc # 查看所有进程 pstree -a # 只查看主进程 pstreesystemctl
systemctl status|grep service以守护进程运行程序
# 无输出类型命令 `命令` & # 有输出类型命令 nohup `命令` &
计划任务
查看计划任务
crontab -l添加计划任务
(实际上就是在vi模式下编辑计划任务文件) crontab -e计划任务特殊符号
*:用来表示所有可能的值,如月份month处用*,表示每个月执行指定任务 ,:用来指定一个列表范围,如月份month处用1,4,7,10,表示在这4个月里执行指定任务 -:用来指定一个区间范围,如月份month处用1-10,表示在1-10月里执行指定任务 /:用来指定一个间隔频率,如月份month处用1-12/2或*/2,表示每两个月执行指定任务计划任务取值范围
分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7)【0和7为周日】计划任务详细图解

ICMP管理(管理ping)
临时生效
开启ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all关闭ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
永久生效
开启ping
vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=0 ESC :wq sysctl -p关闭ping
vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 ESC :wq sysctl -p
文件管理
文件更新后复制
# 当目录1文件有更新时,复制目录1文件到目录2 # -f 强制覆盖而不交互 # -p 保留文件权限、时间、所有者 # -r 递归拷贝子目录 # -u 仅复制有变化的文件 # -v 显示执行过程 /usr/bin/cp -fpruv /xxx/path-1/* /xxx/path-2/目录下文件被批量改成了0777,怎么恢复
# 文件批量改为0664 find . -type f -exec chmod 664 {} + # 目录批量改为0775 find . -type d -exec chmod 775 {} + # shell批量改为0775 find . -type f -name *.sh -exec chmod 775 {} +差量拷贝文件
# 隐藏拷贝过程 /usr/bin/cp -fpru /目录1/* /目录2/ # 显示拷贝过程 /usr/bin/cp -fpruv /目录1/* /目录2/字符串替换
# 替换单个文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g [文件路径] sed -i s/"查找字符串"/"替换字符串"/g /www/test.txt # 替换正则路径文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g [正则路径] sed -i s/"查找字符串"/"替换字符串"/g /www/[a-zA-Z0-9]{1-5}.txt # 先通过grep查找含有指定字符串的文件,再替换文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g `grep -rl "查找字符串" ./`动态查看指定文件
tail -f /logs/prod.log创建文件连接
# 软连接 ln -s [文件、目录路径] [软连接路径] # 硬连接 ln [文件、目录路径] [硬连接路径]打包和解包
# 解包 tar -xf xxx.tar.gz # 打包 tar -cf xxx.tar.gz ./xxx/ # 校验 tar -tf xxx.tar.gz批量操作指定文件
[文件或目录查找命令] -exec [查到的文件或目录被执行该操作] {} + # 例如 # 将当前路径下的所有文件权限改为664 find . -type f -exec chmod 664 {} + # 将当前路径下的所有目录权限改为775 find . -type d -exec chmod 775 {} + # find -type [type参数]: f //文件 d //目录 l //链接 p //管道 b //块设备 c //字符设备 s //套接字socket批量删除指定文件
# 批量删除txt文件 find . -type f -name '*.txt'|xargs -I {} rm {} # 将输出当作标准输入传递给命令 xargs -I {} [command] {}查找当前目录大于、小于、等于1000kb的文件
find . -size +1000k find . -size -1000k find . -size 1000k查找路径下包含指定字符串的文件
grep -rn "[字符串]" [路径] grep -rn "test_str" * -An 目标结果前n行 ep: grep -A1 -rn "test_str" * -Bn 目标结果后n行 ep: grep -B1 -rn "test_str" * -Cn 目标结果前后n行 ep: grep -C1 -rn "test_str" * -i 忽略大小写 ep: grep -i -rn "test_str" * # grep相似的命令还有: awk sed找出一个文件属于哪个软件包
# 以/etc/my.cnf为例 rpm -qf /etc/my.cnf修改文件最后编辑时间
# 修改xxx.sh最后编辑时间为2000-10-10 00:00:00 touch -d "2000-10-10 00:00:00" xxx.sh # 修改所有文件最后编辑时间为2000-10-10 00:00:00 find . -type f -exec touch -d "2000-10-10 00:00:00" {} + # 修改所有文件夹最后编辑时间为2000-10-10 00:00:00 find . -type d -exec touch -d "2000-10-10 00:00:00" {} +修改文件创建、修改时间(Windows)
# 点击快捷键Windows+R,输入powershell # 修改目录|文件的创建|修改日期 Get-Item -path 'D:\java' | foreach-object { $_.LastWriteTime = '10/10/2000 00:00:00' ; $_.CreationTime = '10/10/2000 00:00:00' } # 修改目录内(目录|文件)的创建|修改日期 Get-Childitem -path 'D:\java' -recurse | foreach-object { $_.LastWriteTime = '10/10/2000 00:00:00' ; $_.CreationTime = '10/10/2000 00:00:00' }
内存状态查看
命令格式
free [参数]命令参数
-b 区块为1 byte(单位B) -k 区块为1024 byte(单位KB) -m 区块为1024*1024 byte(单位MB) -g 区块为1024*1024*1024 byte(单位GB) -t 显示内存总和列 -o 不显示缓冲区调节列 -s [两次取内存数据之间隔的秒数] -V 显示版本信息
硬盘状态查看
命令格式
df [参数] [文件]命令参数
# 必要参数 -k 区块为1024 byte(单位KB) -m 区块为 1024*1024 byte(单位MB) -h 区块为 1024*1024*1024 byte(单位GB) -H 区块为 1000*1000*1000 byte(单位GB) -l 只显示本地文件系统 -a 全部文件系统 -i 显示inode信息 --sync 先执行sync命令 --no-sync 不执行sync命令 -P 输出格式为POSIX -T 文件系统类型 # 可选参数 --block-size=[区块大小] 指定区块大小 -t [文件系统类型] 只显示选定文件系统的磁盘信息 -x [文件系统类型] 不显示选定文件系统的磁盘信息 --help 显示帮助信息 --version 显示版本信息
CPU状态查看
命令格式
top
CPU核心数
- CPU核心数查看
echo $(nproc)
SELinux配置
配置文件/etc/sysconfig/selinux介绍
这个文件用来控制本系统SELinux的状态 SELINUX=???可以是以下三个值之一 enforcing SELinux安全策略被强制执行 permissive SELinux安全策略只进行警告 disabled SELinux安全策略被禁止执行 SELINUXTYPE=???可以是以下三个值之一 targeted 目标进程受到保护 minimum 选定进程受到保护 mls 进程多级安全保护SELinux安全策略修改为禁用
getenforce vim /etc/sysconfig/selinux SELINUX=disabled ESC :wq setenforce 0 getenforce