记性不好,将自己觉得好用的一些命令行或者代码放到这里,以后用到方便直接拿来用。还有许多没有来得及整理的,回头陆续更新。:flushed:
ZIP压缩排除不需要压缩的目录:
zip -r yasuo.zip * -x "要排除的目录/*"
tar 压缩、解压:
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
-z:用Gzip压缩或解压;-c:创建压缩;-x:解压;-v:显示压缩或解压的过程;-f:目标文件名
MySQL开启远程连接:
在安装mysql的机器上运行:
1、连接mysql;
2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES
//退出并尝试远程连接
4、mysql>EXIT
防火墙开放端口命令:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
service iptables save
service iptables restart
开机自动启动SVN版本库:
/etc/rc.local
svnserve -d -r /home/svn/project
查看I/O负载:
iostat -x 1 10
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
如果 idle 小于70% IO压力就较大了,一般读取速度有较多的wait.
手动释放cache内存(需要root权限):
/bin/sync
/bin/echo "1" > /proc/sys/vm/drop_caches
更改MySQL数据库存储路径(datadir):
先停止MYSQL进程
1.编辑 /etc/mysql/my.cnf
把原本的注释掉:
#datadir = /var/lib/mysql
并且填上新的路径
datadir = /data/mysql
2.拷贝数据目录到指定新目录
cp -R -p /var/lib/mysql /data/mysql
3.修改 /etc/apparmor.d/usr.sbin.mysqld 存档
找到之前的数据目录注释掉,例如:
#/var/lib/mysql/ r,
#/var/lib/mysql/** rwk,
然后添加新的数据目录,例如:
/var/www/mysql/ r,
/var/www/mysql/** rwk,
4.重新开启即可。
Ubuntu下开启/关闭apache rewrite模块:
sudo a2enmod rewrite
sudo a2dismod rewrite
Jq监听input表单,正对于隐藏域:
$('#test').val('test').change();
修改值时加入change()事件,这样onchange/change就可以触发了
移动端不支持自动播放音乐问题:
<!-- HTML -->
<audio controls="controls" id="music" loop="loop">
<source src="./assets/sound/music.mp3" type="audio/ogg"/>
<source src="./assets/sound/music.ogg" type="audio/ogg"/>
</audio>
<!-- JS -->
<script>
Media = document.getElementById("music");
Media.src = "音乐地址";
Media.play();
</script>
Ubuntu安装SSH服务:
安装openssh-server
sudo apt-get install openssh-server
启动、重启
/etc/init.d/ssh start
/etc/init.d/ssh restart
配置路径
/etc/ssh/sshd_config
Ubuntu server设置时区:
sudo dpkg-reconfigure tzdata
#按照提示依次选择,时区为"Asia/Shanghai"
Apache2 简易配置二级域名:
# 在/etc/apache2/sites-available目录下建一个新的site文件
# 例如 abc.domain.com.conf (后缀必须为.conf格式)
# 写入配置
<VirtualHost *:80>
ServerAdmin abc.domain.com #随意填写
ServerName abc.domain.com #所属域名
DocumentRoot /var/www/html/abc #域名所属目录(提前建立好)
</VirtualHost>
# 激活site文件
a2ensite abc.domain.com.conf
# 修改hosts
sudo vim /etc/hosts
# 写入二级域名
127.0.0.1 abc.domain.com
# 重启网络
sudo /etc/init.d/networking restart
# 最后重启Apache服务,二级域名解析为A记录,记录值为服务器IP即可。
用CSS3中的flexbox 布局模式实现垂直居中:
.vertical-container{
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
}
Ubuntu用户分组简单操作:
# 创建用户组
groupadd dev
# 把已存在的用户分配到用户组
gpasswd -a myweb dev
# 文件夹所属用户分配
chown -R dev:myweb /var/www/html/test.xinyu19.com/
Nginx 1.12下配置多站点配置:
1.在 sites-available 目录拷贝一份 default 配置文件
2.修改新的站点信息
server {
# 监听端口
listen 80;
# 域名信息
server_name test.xinyu19.com;
# 网站目录
root /var/www/html/test.xinyu19.com;
# 解析的默认页
index index.php index.html index.htm
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}
3.创建软连接,映射站点配置
ln -s sites-available/yourweb /sites-enabled/yourweb
4.重载一下nginx
service nginx reload
查询指定目录下所有文件夹占用磁盘量,max-depth=1 指的是一级目录:
du -h --max-depth=1 /www/wwwroot/
QQ自定义分享
<!-- 注:适用于Handsome,标题自定义更换 content内容即可,这里自动为文章标题 -->
<!-- QQ分享标题 -->
<meta itemprop="name" content="<?php $this->archiveTitle('','',''); ?>">
<!-- QQ分享图 -->
<meta itemprop="image" content="https://img.xinyu19.com/themes/avatar.png">
软连接的删除与建立(PHP为例)
删除默认版本软件连接
rm -f /usr/bin/php
建立软连接
ln -sf /www/server/php/73/bin/php /usr/bin/php
Windows下以进程方式启动Mysql
写入bat批处理
start "" "MYSQL路径\bin\mysqladmin.exe"
start "" "MYSQL路径\bin\mysqld.exe"
start "" "MYSQL路径\bin\mysql.exe"
Docker基本命令篇
安装docker
yum install docker -y
docker服务相关命令
systemctl start docker #启动docker
systemctl enable docker #开机启动docker
systemctl status docker #查看docker状态
docker高速镜像地址替换
http://get.daocloud.io/#install-docker
docker镜像的搜索、下载
docker search nginx #就找第一个,下载最多的,官方镜像
docker pull nginx #下载nginx镜像
docker images #查看有哪些镜像
启动镜像
docker run -p 80:80 --name mynginx -d nginx
#-p指定服务器80端口,映射容器80 web端口,容器名为mynginx -d 守护进程模式启动(因为容器必须有进程在运行,否则结束就挂)
docker进入容器系统
docker exec -it 容器ID /bin/bash
#-it 表示 -i(保持输入) -t(创建一个伪终端)
docker其他基本命令
docker ps #查看目前工作的容器
docker ps -a #查看所有运行过的容器
docker rmi 镜像id #删除镜像
docker rm 容器id #删除容器
docker stop 容器id #暂停容器
docker image prune -f -a #删除所有不适用的镜像
docker container prune -f #删除所有停止的容器
JS获取URL参数
// 获取URL参数函数
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
Python3.8.0快速编译安装
依赖包安装
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
编辑并安装
./configure --prefix=/usr/local/python3
make && make install
建立软连接
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
Windows Terminal自定义SSH
// 将以下json配置修改好之后写入profiles.json中的profiles中,确保json格式正确
{
"acrylicOpacity": 0.5,
"closeOnExit": true,
// 颜色主题,可以查找其他主题替换
"colorScheme": "One Half Dark",
// 这里填写用户名、ip地址
"commandline": "ssh 用户名@ip地址",
"cursorColor": "#FFFFFF",
"cursorShape": "bar",
// 这里可以自定义ssh使用的字体
"fontFace": "Fira Code",
"fontSize": 10,
// 可以去 https://www.guidgen.com/ 生成GUID
"guid": "{6fcafea6-cbad-4d0e-a897-ad95cf832b13}",
"historySize": 9001,
"icon": "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
// SSH显示的名称
"name": "Linux玩具机",
"padding": "0, 0, 0, 0",
"snapOnInput": true,
"startingDirectory": "",
"useAcrylic": false
}
VScode自动识别文件编码
在设置中找到【files.autoGuessEncoding
】选项并勾选。
浏览器语音播报
/** 因大多数网站滥用语音播报问题,Chrome 71以上版本无效 **/
function speak(sentence) {
const utterance = new SpeechSynthesisUtterance(sentence)
window.speechSynthesis.speak(utterance)
}
// test
speak('目前,Speech API最常见的用法是听写和读取。也就是用户通过麦克风说话,设备把语音翻译成文字(看看 Chrome开发团队做的demo),或者设备读取文字转化成语音。');
GitSSH
git@github.com:用户名/仓库名称.git
查询Linux进程相关日志
dmesg | egrep -i -B100 'killed process'
或:
egrep -i 'killed process' /var/log/messages
egrep -i -r 'killed process' /var/log
或:
journalctl -xb | egrep -i 'killed process'
查询Linux进程启动时间
ps -eo pid,lstart,etime,cmd | grep 进程名称
查看每个IP SSH错误登陆次数
#登录失败
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
#登录成功
cat /var/log/secure | awk '/Accepted/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
#清空日志
echo /dev/null > /var/log/secure
查看指定进程内存占用
ps aux | awk '{print $6/1024 " MB\t\t" $11}' | egrep 'Server|ServerTest|World|ShareMemory|Login'
cache/buff执行清理
(echo "0 */1 * * * sh /opt/clean_cacheMem.sh > /dev/null 2>&1 &"; crontab -l) | crontab
安装并配置DenyHost,防止SSH爆破登录
# 1.下载DenyHost源码包
wget https://github.com/denyhosts/denyhosts/releases/download/v3.1/DenyHosts-3.1.2.tar.gz
# 2.解压DenyHost源码包
tar zxvf DenyHosts-3.1.2.tar.gz
# 3.安装python3
yum install python3
# 4.安装DenyHost,需要python3环境
cd DenyHosts-3.1.2/ && python3 setup.py install
# 4.配置相关参数
vi /etc/denyhosts.conf
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = #表示过多久后清除,留空表示永久
DENY_THRESHOLD_INVALID = 5 #无效用户错误次数
DENY_THRESHOLD_VALID = 5 #有效用户错误次数
DENY_THRESHOLD_ROOT = 5 #root用户错误次数
IPTABLES = /sbin/iptables #注释掉防火墙调用
ADMIN_EMAIL = root@localhost #注释掉Email发送
# 5.配置开机自动启动
vi /etc/rc.local
#加入以下命令
/usr/bin/daemon-control-dist start
#或
/usr/local/bin/daemon-control-dist start
解除DenyHost指定IP
#!/bin/bash
IP=$1
if [ -n "$IP" ];then
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
/usr/local/bin/daemon-control-dist stop
echo /dev/null > /var/log/secure
sed -i "/$IP/d" /etc/hosts.deny
sed -i "/$IP/d" /var/lib/denyhosts/hosts
sed -i "/$IP/d" /var/lib/denyhosts/hosts-restricted
sed -i "/$IP/d" /var/lib/denyhosts/hosts-root
sed -i "/$IP/d" /var/lib/denyhosts/hosts-valid
sed -i "/$IP/d" /var/lib/denyhosts/users-hosts
sed -i "/$IP/d" /var/lib/denyhosts/users-invalid
sed -i "/$IP/d" /var/lib/denyhosts/users-valid
iptables -D INPUT -s $IP -j DROP
systemctl restart rsyslog.service
/usr/local/bin/daemon-control-dist start
echo $IP remove from Denyhosts
else
echo "This is not IP"
fi
else
echo "IP is empty"
fi
记录指定目录下文件变化
#!/bin/bash
# shell by 心语难诉
# 2023-10-9 16:16:18
# 第一次运行需要安装:yum install inotify-tools -y
# 监控目录
monitorPath="/home/tlbb"
# 监控 修改、删除、创建
monitorType="modify,delete,create"
# 需要排除监控的目录或文件
excludedDirectory="/home/tlbb/Server/(Log/|Perf/|XYD_DataBase/|DataBase/|billing.log|quitserver.cmd|exit.cmd|ServerNew.gz.filepart|ServerNew|2.gz.filepart)"
# 日志记录文件
logPath="/opt/change.log"
#杀死已有的进程
killall -9 inotifywait
#执行监控
inotifywait -mrqd --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' -e ${monitorType} ${monitorPath} --exclude ${excludedDirectory} -o ${logPath}
monitor=$(pgrep -c "inotifywait" | grep -v 'grep'| grep -v 'pgrep')
if [ $monitor -gt 0 ]; then
echo -e "Monitoring started successfully!!"
else
echo -e "Monitoring startup failed!!"
fi
CentOS 7.x 防火墙端口转发
#开启系统路由模式功能
echo net.ipv4.ip_forward=1>>/etc/sysctl.conf
#使内核修改生效
sysctl -p
#-------------------------------------
#开启firewalld
systemctl start firewalld
#开启firewalld NAT
firewall-cmd --add-masquerade --permanent
#-------------------------------------
#开放本机TCP端口 1234 的外部访问
firewall-cmd --zone=public --add-port=1234
#设置本机TCP端口 1234 转发 到B服务器的4567端口
firewall-cmd --add-forward-port=port=1234:proto=tcp:toaddr=192.168.139.128:toport=4567 --permanent
#重启firewall
firewall-cmd --reload
#-------------------------------------
#---------------其他操作---------------
#-------------------------------------
#删除端口转发
firewall-cmd --remove-forward-port=port=1234:proto=tcp:toaddr=192.168.139.128:toport=4567 --permanent
#重启firewall
firewall-cmd --reload
#-------------------------------------
#查看所有映射情况:
firewall-cmd --list-all
#状态:
systemctl status firewalld 或者 firewall-cmd --state(查看防火墙开启关闭状态)
#启动:
systemctl start firewalld
#停止:
systemctl stop firewalld
#开机启动:
systemctl enable firewalld (可让防火墙开机自启动,防火墙默认开机不启动的,需手动启动)
#禁用:
systemctl disable firewalld
YRG纠错查询
find /home/tlbb/Server/DataBase/ -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head -n 100 | grep 'NewExterior_DressBox.txt'
未完待续……
此处评论已关闭