基本命令的使用
未分类
#查看历史命令
history
#查看全路径
pwd
#根据进程名查找进程
ps -ef | grep 进程名
#硬链接与软连接
#创建软连接
ln -s source-file target-file
#创建硬链接(文件夹逻辑上不允许建立硬链接)
ln source-file target-file
包相关
rpm
npm
#查看包大小
du -h --max-depth=2
df -h
du -h --max-depth=1
yum源更换
#CentOS7更换yum源为阿里云镜像源
#1. 备份原来的yum源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
#2.设置aliyun的yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#3.添加EPEL源
#EPEL(http://fedoraproject.org/wiki/EPEL)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上 EPEL后,可以像在 Fedora 上一样,可以通过 yum install package-name,安装更多软件。
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
#4.清理缓存并生成新的缓存
yum clean all
yum makecache
网络相关
#初始服务器网络配置 (于VMware centos7.1810 中测试可用)
#获取动态地址访问外网
dhclient
#设置服务器静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改
ONBOOT=no 改为 ONBOOT=yes
BOOTPROTO=dhcp 改为 BOOTPROTO=static
#添加
IPADDR=192.168.127.128
NETMASK=255.255.255.0
GATEWAY=192.168.127.2
DNS1=119.29.29.29
#重启网络
systemctl restart network.service
日志相关
#动态查看日志文件
tail -f 日志文件路径
#历史命令 显示时间
export HISTTIMEFORMAT='%F %T'
history
端口相关
#远程端口测试
telnet IP port
#查看端口占用情况
netstat -tunlp/na |grep 端口号
#测试端口是否占用
netstat –ano
netstat -tlunp
防火墙相关
# 防火墙开启与关闭
# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
systemctl stop firewalld
# 防火墙放行端口
(1) iptables -I INPUT -p tcp --dport 60010 -j ACCEPT
(2) firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重新加载
firewall-cmd --reload
# 防火墙查询放行端口
firewall-cmd --zone=public --list-ports
firewall-cmd --list-all
firewall-cmd --list-all-zone
# 基于IPtables
# 配置防火墙允许指定ip访问端口
# 开放一个IP的一些端口,其它都封闭
iptables -A Filter -p tcp --dport 109 -s 192.168.100.200 -j ACCEPT
# 开启ip段192.168.1.0/24端的80口
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
# 多个端口
iptables -A Filter -p tcp -m multiport --destination-port 22,53,80,110 -s 192.168.20.3 -j REJECT
# 指定时间上网
iptables -A Filter -s 10.10.10.253 -m time --timestart 6:00 --timestop 11:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
# iptables 限制ip访问 注意命令的顺序不能反了。
# 通过iptables限制9889端口的访问(只允许192.168.1.201、192.168.1.202、192.168.1.203),其他ip都禁止访问
iptables -I INPUT -p tcp --dport 9889 -j DROP
iptables -I INPUT -s 192.168.1.201 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.202 -p tcp --dport 9889 -j ACCEPT
iptables -I INPUT -s 192.168.1.203 -p tcp --dport 9889 -j ACCEPT
# 基于firewalld https://www.cnblogs.com/zmqcoding/p/14700374.html
# 自定义复杂规则(注意是否与已有规则冲突)
# 允许指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
# 允许指定IP段访问本机8080-8090端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'
# 禁止指定IP访问本机8080端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'
# 删除rich rule
firewall-cmd --permanent --remove-rich-rule '规则列表'
firewall-cmd --permanent --remove-rich-rule 'rule family="ipv4" source address="0.0.0.0/0" forward-port port="8077" protocol="tcp" to-port="80" to-addr="192.168.4.245"
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放8080端口(TCP协议)
firewall-cmd --permanent --add-port=8080/tcp
# 移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
# 新建永久规则,批量开放一段端口(TCP协议)
firewall-cmd --permanent --add-port=9001-9100/tcp
# 任何修改操作,配置完成后,需要重新装载firewall。也可重新启动firewalld服务。
firewall-cmd --reload
service firewalld restart
远程连接相关
#使用ssh连接远程服务器
ssh 10.14.2.103 -p22022 -uroot
ssh root@10.14.2.103 -p22022
ssh ip -p端口 -u用户名
发送请求相关
#curl发送post请求
curl -H "Content-Type: application/json" \
-X POST \
-d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }' \
"http://192.168.0.1:8001/test"
文件或文件夹
#查询 path/当前 目录下的所有空文件夹
find [path] -type d -empty
#删除 path/当前 目录下的所有空文件夹
find [path] -type d -empty | xargs rm -rf
#删除./info/目录下10天前的所有.log结尾文件
find ./info/ -type f -name "*.log" -mtime +10 -delete
#删除当前目录下120min前的所有.log结尾文件
find ./ -type f -name "*.log" -mmin +120 -delete
#Linux清空日志的五种方法
第一种:cat /dev/null > filename
第二种:: > filename
第三种:> filename
第四种:echo "" > filename
第五种:echo > filename
#删除文件
rm -rf 包名 删除该包及其包内子包
-f :即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r:将目录及以下之档案亦逐一删除。
#创建文件夹
mkdir -p 多级目录
touch a.txt
#压缩
tar -zcvf 文件名.tar.gz 要压缩文件路径
-c 建立一个压缩文件的参数指令(create) –压缩
-x 解开一个压缩文件的参数指令(extract) –解压
-z 是否需要gzip压缩
-v 显示压缩的过程(verbose)
-f 使用档名,在f之后要立即接档名(file)
#解压包
tar -zxvf 解压文件 -C 解压目录
unzip [可选参数] 解压文件 -d 解压路径
unzip -o test.zip -d /opt/tmp/ #将test.zip解压到/tmp目录下,并且覆盖已有文件
# 可选参数
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f 更新现有的文件;
-l 显示压缩文件内所包含的文件;
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t 检查压缩文件是否正确;
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v 执行时显示详细的信息;
-z 仅显示压缩文件的备注文字;
-a 对文本文件进行必要的字符转换;
-b 不要对文本文件进行字符转换;
-C 压缩文件中的文件名称区分大小写;
-j 不处理压缩文件中原有的目录路径;
-L 将压缩文件中的全部文件名改为小写;
-M 将输出结果送到more程序处理;
-n 解压缩时不要覆盖原有的文件;
-o 不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码> 使用zip的密码选项;
-q 执行时不显示任何信息;
-s 将文件名中的空白字符转换为底线字符;
-V 保留VMS的文件版本信息;
-X 解压缩时同时回存文件原来的UID/GID;
-d<目录> 指定文件解压缩后所要存储的目录;
-x<文件> 指定不要处理.zip压缩文件中的哪些文件;
-Z unzip-Z等于执行zipinfo指令。
#根据 文件/文件夹 名称查找文件
find / -name '文件夹名称'
find / -type d -name "ssh"
find / -name "*.config"
find / -empty
#服务期之间文件拷贝
scp [可选参数] file_source file_target
scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file
scp -P 端口号 local_file remote_username@remote_ip:remote_folder P 大写
#从本地复制到远程
scp [用户名@]远程IP:远程文件夹 本地文件夹
scp 用户名@远程IP:远程目录 本地目录
#从远程复制到本地 调换local和remote位置即可
参数说明:
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
#本地文件复制到远程
scp -r ./资料 root@192.168.224.135:/opt