记性不好,将自己觉得好用的一些命令行或者代码放到这里,以后用到方便直接拿来用。还有许多没有来得及整理的,回头陆续更新。: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'

未完待续……