MySQL 8.0.21重置root密码

MySQL 8.0.21忘记密码的时候重置密码方法基本和MySQL5.7方法一样,重置方法如下:
1、先修改my.cnf文件在[mysqld]部分增加skip-grant-tables参数。
2、重启mysql服务
3、直接使免密码登录mysql,使用下面命令修改root密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;

顺序不能乱喔,要么会报ERROR 1290 (HY000)错误。

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

VIA官网文档:
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

ORA-00257报错处理

用户反映NC测试库不能连接,报ORA-00257错误,截图如下:
ORA-00257.png
错误原因是很常见的‘归档日志’写满‘快闪恢复区’(flash recovery area)导致的问题。解决方法如下:
一、删除过期的归档文件;
二、修改快闪恢复区(flash recovery area)的大小;





---阅读剩余部分---

MySQL8.0.21连接报错Plugin caching_sha2_password could not be loaded解决方法

MySQL8默认加密使用的是caching_sha2_password插件,

root@devops_db 17:54:  [mysql]> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)

root@devops_db 17:55:  [mysql]>  select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | ice              | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

使用SQL客户端连接的时候就会报Plugin caching_sha2_password could not be loaded错误,常见有如下解决方法:
1、写入my.cnf文件后重启MySQL:

[mysqld]
default_authentication_plugin=mysql_native_password

2、兼容新老版本的认证方式:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; #更新用户密码 
FLUSH PRIVILEGES; #刷新权限

3、创建用户时指定加密方式:

CREATE USER 'ice'@'10.10.%' IDENTIFIED WITH mysql_native_password BY 'password'; #加密方式为
GRANT ALL privileges on TESTDB.* to 'ice'@'10.10.%' with grant option;
FLUSH PRIVILEGES;

使用mysql_native_password插件加密即可链接,mysql_native_password也是5.7以下版本使用的加密方式。

CentOS7.8编译安装MySQL8.0.21

  Centos7.8安装的是minimal最小化版本,首先安装基础必需的软件包及更新下系统:

yum install gcc gcc-c++ gcc-g77 make autoconf automake ncurses ncurses-devel openssl openssl-devel bison cmake cmake3 -y

MySQL8.0需要用gcc的版本为 4.8以上,CentOS自带的版本比较低,通过yum安装的版本也低,参考下面升级GCC版本

升级GCC版本参考:https://mhl.xyz/Linux/update-gcc.html

MySQL8.0.21.png

添加mysql运行账号及数据保存目录

groupadd mysql
useradd -g mysql mysql -s /bin/false
mkdir -p /data/mysql/
mkdir -p /data/mysql_logs/binlog/
touch /data/mysql_logs/error.log
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /data/mysql_logs/

---阅读剩余部分---

lsof查看文件归属进程占用信息

lsof: list open files
可以列出被进程所打开的文件的信息。被打开的文件可以是
1.普通文件
2.目录
3.网络文件系统的文件
4.字符设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在linux里面,大部分的东西都是被当做文件的…
lsof常用使用说明:

1.列出所有打开的文件:

lsof

备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

2. 查看谁正在使用某个文件

lsof   /filepath/file

3.递归查看某个目录的文件信息

lsof +D /filepath/filepath2/

备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法

lsof | grep ‘/filepath/filepath2/’

5. 列出某个用户打开的文件信息

lsof  -u username

备注: -u 选项,u其实是user的缩写

6. 列出某个程序所打开的文件信息

lsof -c mysql

备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了

7. 列出多个程序多打开的文件信息

lsof -c mysql -c apache

8. 列出某个用户以及某个程序所打开的文件信息

lsof -u test -c mysql

9. 列出除了某个用户外的被打开的文件信息

lsof   -u ^root

备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

10. 通过某个进程号显示该进行打开的文件

lsof -p 1

11. 列出多个进程号对应的文件信息

lsof -p 123,456,789

12. 列出除了某个进程号,其他进程号所打开的文件信息

lsof -p ^1

13 . 列出所有的网络连接

lsof -i

14. 列出所有tcp 网络连接信息

lsof  -i tcp

15. 列出所有udp网络连接信息

lsof  -i udp

16. 列出谁在使用某个端口

lsof -i :3306

17. 列出谁在使用某个特定的udp端口

lsof -i udp:55

特定的tcp端口

lsof -i tcp:80

18. 列出某个用户的所有活跃的网络端口

lsof  -a -u test -i

19. 列出所有网络文件系统

lsof -N

20.域名socket文件

lsof -u

21.某个用户组所打开的文件信息

lsof -g 5555

22. 根据文件描述列出对应的文件信息

lsof -d description(like 2)

23.根据文件描述范围列出文件信息

lsof -d 2-3

24. 列出COMMAND列中包含字符串" sshd",且文件描符的类型为txt的文件信息
lsof -c sshd -a -d txt

25.列出被进程号为1234的进程所打开的所有IPV4 network files
lsof -i 4 -a -p 1234

26. 列出目前连接主机peida.linux上端口为:20,21,22,25,53,80相关的所有文件信息,且每隔3秒不断的执行
lsof -i @peida.linux:20,21,22,25,53,80 -r 3

CentOS 7 清除系统日志

history:

# echo > .bash_history //清除保存的用户操作历史记录
# history -cw //清除所有历史

设置不保存history:修改/etc/profile将HISTSIZE=1000改成0或1

echo > /var/log/wtmp //清除用户登录记录
echo > /var/log/btmp //清除尝试登录记录
echo > /var/log/lastlog //清除最近登录信息
echo > /var/log/secure //登录信息
echo > /var/log/messages
echo > /var/log/syslog //记录系统日志的服务
echo > /var/log/xferlog
echo > /var/log/auth.log
echo > /var/log/user.log
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/mail.info
echo > /var/run/utmp

释放内存缓存
内存缓存分 Page Cache 和 Buffer Cache。前者从硬盘读取的文件缓存,譬如 find 查找文件首次速度慢,而后就变快了。后者是 slab 分配器中的对象(Dentry 缓存、Inode 缓存)。为避免清除缓存引发可能的内存 Buffer 数据丢失,清除前先运行 sync 命令使数据写到硬盘。
同时清除两种类型缓存。如要选择性清除替换其中数字,1 表示 Page Cache,2表示 Buffer Cache。

sync && echo 3 > /proc/sys/vm/drop_caches

用 free -h 命令检查运行前后的内存 buff/cache 用量,available 表示剩余可用容量。
可以 crontab -e 添加定时释放内存缓存任务。例如每天凌晨 4 点运行一次。

0 4 * * * sync && echo 3 > /proc/sys/vm/drop_caches

expdp/impdp/rman会话进度查看

oracle11g使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图来显示数据泵取作业的信息,
查看expdp进度:

select * from DBA_DATAPUBMP_JOBS;
select * from DBA_DATAPUMP_SESSIONS;
select sid,serial# from v$session s,dba_datapump_sessions d where s.saddr=d.saddr;

查看impdp进度:

SELECT   a.tablespace_name,
         ROUND (a.total_size) "total_size(MB)",
         ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",
         ROUND (b.free_size, 3) "free_size(MB)",
         ROUND (b.free_size / total_size * 100, 2) || '%' free_rate
  FROM   (  SELECT   tablespace_name, SUM (bytes) / 1024 / 1024 total_size
              FROM   dba_data_files
          GROUP BY   tablespace_name) a,
         (  SELECT   tablespace_name, SUM (bytes) / 1024 / 1024 free_size
              FROM   dba_free_space
          GROUP BY   tablespace_name) b
 WHERE   a.tablespace_name = b.tablespace_name(+);

查看RMAN备份进度:

SELECT SID,OPNAME, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
order by "%_COMPLETE"
desc

CentOS7.x快速安装Mariadb10.4

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

mariadb.png
CentOS7快速安装Mariadb10.04方法如下:
1、检查是否已经具有MariaDB相关安装,并删除已有安装:

rpm -qa|grep mariadb  #查询已安装包
rpm -e --nodeps mariadb-*   #移出相关包
yum remove mysql mysql-server mysql-libs compat-mysql51   # 删除Mysql服务

2、增加MariaDB的仓库源,使用官方脚本会自动安装最新仓库:

yum install wget -y
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
./mariadb_repo_setup
yum install MariaDB-server -y
systemctl start mariadb
systemctl enable mariadb

3、初始化安全设置:

mysql_secure_installation   #根据提示操作修改密码等


---阅读剩余部分---

CentOS7.8快速安装Redis6.0.5

在安装Redis6之前需要升级下gcc版本:参考 CentOS7.7快速升级gcc到8.x版本
快速安装步骤如下:
安装下tcl包:以免make test不能通过

yum install tcl -y

下载编译安装:

wget http://download.redis.io/releases/redis-6.0.5.tar.gz
tar xvf redis-6.0.5.tar.gz
mv redis-6.0.5 /usr/local/redis
cd /usr/local/redis/
make
make test
make install

修改参数,可参考redis.conf配置,最后启动即可;
以配置文件方式启动

/usr/local/redis/src/redis-server /usr/local/redis/redis.conf

redis-cli客户端命令整理

redis-cli 是Redis命令行界面,一个简单的程序,允许向Redis发送命令,并直接从终端读取服务器发送的回复。

有两种主要的模式:一种是交互模式,在这种模式下,用户输入命令并获得回复的REPL(Read Eval Print Loop)另一种模式是将命令作为参数发送redis-cli,执行并打印在标准输出上。

redis-cli命令参数:

主要参数:
-h host地址
-p 端口
-n 修改数据库
-r(repeat)选项代表江命令执行多次
-i(interval)选项代表每个几秒执行一次命令(必须和-r选项一致使用;单位是秒,不支持毫秒微单位)
-x 选项代表从标准输入(stdin)读取数据作为redis-cli的最后一个参数
-c(cluster)选项是连接Redis Cluster节点时需要使用的,-c选项可以防止moved和ask异常
-a 如果Redis配置了密码,可以用-a(auth)选项,有了这个选项就不需要手动输入auth命令
--scan和--pattern 选项用于扫描指定模式的键,相当于使用scan命令
--slave 选项是把当前客户端模拟成当前Redis节点的从节点,可以用来获取当前Redis节点的更新操作
--rdb 选项会请求Redis实例生成并发送RDB持久化文件,保存在本地,可使用它做持久化文件的定期备份
--pipe 选项用于将命令封装成Redis通信协议定义的数据格式,批量发送给Redis执行
--bigkeys 选项使用scan命令对Redis的键进行采样,从中找到内存占用比较大的键值,这些键可能是系统的瓶颈
--eval 选项用于执行指定Lua脚本
--latency 选项可以测试客户端到目标Redis的网络延迟(执行结果只有一条)
--latency-history 选项以分时段的形式了解延迟信息(延时信息每15秒输出一次),可以通过-i参数控制间隔时间
--latency-dist 选项会使用统计图表的形式从控制台输出延迟统计信息
--stat 选项可以实时获取Redis的重要统计信息(info命令中的统计信息更全),能实时看到一些增量的数据(例如requests)
--raw和--no-raw
--no-raw选项是要求命令的返回结果必须是原始的格式,--raw恰恰相反,返回格式化后的结果

常见命令:

从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
SLAVEOF host port  #命令可以将当前服务器转变为指定服务器的从属服务器(slave server)
client list   #显示连接到服务器的客户端信息
shutdown   #关闭redis服务
ping       #该命令用于检测 redis 服务是否启动
redis-cli -h host -p port -a password  command  #该命令用于在远程服务上执行命令
keys *     #获取所有键值
dbsize     #获取键总数
exists key #查询键是否存在,返回存在的个数,可查询多个
type key   #查询键类型
move key db #移动键到其他数据库
ttl key    #查询key的生命周期(秒)-1:永远不过期。
设置过期时间
秒语法:expire key seconds
毫秒语法:pexpire key milliseconds
永不过期:persist key
rename key newkey  #更改键名称
strlen key   #获取值长度
append key value  #追加内容
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value

via:https://www.runoob.com/redis/redis-keys.html
https://zhuanlan.zhihu.com/p/47692277
https://my.oschina.net/MrMichael/blog/294888

CentOS7快速升级OpenSSH到最新版本

openssh.gif
CentOS7默认带的ssh版本是7.4p1存在远程代码执行漏洞,需升级至当前最新版OpenSSH_8.3解决,查看当前版本信息:

[root@c7 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@c7 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

快速升级步骤如下:
安装基础组件:

yum install gcc gcc-c++ openssl-devel autoconf automake zlib zlib-devel pcre-devel pam-devel rpm-build pam-devel telnet -y

卸载系统老版本openssh,备份配置文件

rpm -e --nodeps $(rpm -qa | grep openssh)
cp -r /etc/ssh/ /tmp/ssh
cd /etc/ssh/
rm /etc/ssh/* -rf


---阅读剩余部分---

CentOS7快速升级OpenSSL

openssl-logo.png
CentOS7的OpenSSL软件版本比较低,查看默认版本:

[root@c7 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@c7 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

升级到OpenSSL 1.1.1g 版本步骤如下:
安装基础组件:

yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel -y

下载解压编译安装openssl

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar xvf openssl-1.1.1g.tar.gz
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make
make install


---阅读剩余部分---

Tengine ngx_http_upstream_check_module 健康功能检测使用

ngx_http_upstream_check_module模块可以为Tengine提供主动式后端服务器健康检查的功能。
该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:

--add-module=modules/ngx_http_upstream_check_module

编辑nginx.conf

http {
    upstream cluster1 {
        # simple round-robin
        server 192.168.30.116:80;
        #server 192.168.0.2:80;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }
    upstream cluster2 {
        # simple round-robin
        server 192.168.30.113:80;
        server 192.168.30.114:80;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_keepalive_requests 100;
        check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }
    server {
        listen 80;
        location /1 {
            proxy_pass http://cluster1;
        }
        location /2 {
            proxy_pass http://cluster2;
        }
        location /status {
            check_status;
            access_log   off;
            allow SOME.IP.ADD.RESS;
            deny all;
        }
    }
}
指令后面的参数意义是:
interval:向后端发送的健康检查包的间隔。
fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
timeout: 后端健康请求的超时时间。
default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
type:健康检查包的类型,现在支持以下多种类型
tcp:简单的tcp连接,如果连接成功,就说明后端正常。
ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。
check_http_send http_packet:
该指令可以配置http健康检查包发送的请求内容。为了减少传输数据量,推荐采用"HEAD"方法。
当采用长连接进行健康检查时,需在该指令中添加keep-alive请求头,如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"。 同时,在采用"GET"方法的情况下,请求uri的size不宜过大,确保可以在1个interval内传输完成,否则会被健康检查模块视为后端服务器或网络异常。
check_http_expect_alive: 该指令指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的。
check_status:
显示服务器的健康状态页面。该指令需要在http块中配置。
在Tengine-1.4.0以后,你可以配置显示页面的格式。支持的格式有: html、csv、 json。默认类型是html。
你也可以通过请求的参数来指定格式,假设‘/status’是你状态页面的URL, format参数改变页面的格式,比如:
/status?format=html
/status?format=csv
/status?format=jsonfan

via:
http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

Tengine快速安装及使用

Tengine是由淘宝网发起的Web服务器项目。它在Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网 ,天猫商城 等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
官网地址:http://tengine.taobao.org
tengine.png
步骤如下:
安装相关依赖包:

yum install gcc openssl-devel openssl openssl-devel -y
cd /opt
wget https://zlib.net/fossils/zlib-1.2.11.tar.gz
tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make
make install

wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
tar xvf pcre-8.44.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/pcre --libdir=/usr/local/lib/pcre --includedir=/usr/local/include/pcre
make
make install

安装Tengine,最新版本的Tegine可从官网 http://tengine.taobao.org 获取,使用nginx用户运行Tengine





---阅读剩余部分---

CentOS7安装入侵检测工具chkrootkit

rootkit是linux系统下常见一种木马后门程序,通过替换系统文件来达到隐藏和入侵的目的,攻击能力极强;
linux下容易被替换系统程序有login ls ps ifconfig du find nestat 等文件,其中login是最经常被替换的;因为linux登录,无论远程还是本地,都必须要启动/bin/login来收集并核对用户的账号和密码;系统管理员修改密码,攻击者还是可以登录系统的;
rootkit.jpg
安装步骤初始需要的组件:

yum install wget gcc-c++ glibc-static -y

下载安装包:

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.md5

校验安装包:

md5sum -c chkrootkit.md5
chkrootkit.tar.gz: OK



---阅读剩余部分---

MySQL触发器的创建、查看、删除

介绍
表述:顾名思义在条件符合某种情况时,被触发执行的相关操作。
时间:事件发生前before和发生后after
事件:

名称    介绍
update    可用**old**访问旧数据,**new**访问新数据
delete    可用**old**访问旧数据
insert    可用**new**访问新数据 

创建触发器:

delimiter //  重定义行结束符
    create trigger trigger_name trigger_time trigger_event on table_name for each row
    begin
    -- 需要执行的sql操作语句
    end//
delimiter ;
-- delimiter          用于修改默认的行结束符,由于在触发器中有多条sql语句,他们需要使用分号来结束,但是触发器是一个整体,所以需要先更换默认的行结束符
-- trigger_name     自定义触发器名
-- trigger_time        时间点 before|after
-- trigger_event     事件 delete|update|insert
-- table_name         表名



---阅读剩余部分---

Nginx解决前端跨域问题

CORS是一个W3C标准,全称是跨域资源共享(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

当前几乎所有的浏览器(Internet Explorer 8+, Firefox 3.5+, Safari 4+和 Chrome 3+)都可通过名为跨域资源共享(Cross-Origin Resource Sharing)的协议支持AJAX跨域调用。

Chrome,Firefox,Opera,Safari都使用的是XMLHttpRequest2对象,IE使用XDomainRequest。

简单来说就是跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域。跨域资源共享(CORS)也是未来的跨域问题的标准解决方案。

---阅读剩余部分---

Windows批处理脚本获取前一天日期

Windows批处理获取日期时间还是稍有点复杂,以下脚本为记录获取前一天的日期:

@echo off
rem 获取昨天日期
set YE=%date:~0,4%
set MO=%date:~5,2%
set DA=%date:~8,2%
set DG=1
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false))
set LY=%YE%
set LM=%MO%
if %MO:~0,1%==0 (set MO=%MO:~1,1%)
if %DA:~0,1%==0 (set DA=%DA:~1,1%)
if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else (
if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12+%MO%-1) & (set/a LD=31+%DA%-%DG%) else (
set/a LM=%MO%-1
if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%))
for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DG%))
for %%b in (5 7 8 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DG%))))
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set Han=
set Han=%LY%%LM%%LD%
echo 昨天的日期为:%Han%
pause

Nginx实现301跳转

将老域名后导流到新域名:
需要将之前用的www.a.com域名的流量全部跳转到www.b.com
实现效果:比如访问 www.a.com/news/123.html自动跳到www.b.com/news/123.html
使用Nginx的rewrite命令实现:

server {
listen     80;
server_name  www.a.com;
rewrite  ^/(.*)$  http://www.b.com/$1 permanent;
其他配置省略...
}



---阅读剩余部分---

最新

分类

归档

评论

其它