欢迎各位兄弟 发布技术文章
这里的技术是共享的
${STR,,}, 把STR中的所有大写字母转换为小写输出(不改变值)
[root@junun ~]# str1=ABCDE
[root@junun ~]# echo ${str1,,}
abcde
更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】
${STR^^}, 把STR中的所有小写字母转换为大写输出(不改变值)
[root@junun ~]# str=abcde
[root@junun ~]# echo ${str^^}
ABCDE
完全放行forward链
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -j ACCEPT
firewall-cmd --reload
sed 执行系统命令。查找当前目录以及子目录中以 ".sh",并改为以".shell"结尾。
find ./a -type f -regex ".*\.sh$" | sed -r -n 's#(.*\.)sh$#mv & \1shell#e'
劫持危险命令 crontab -r
cat > /usr/bin/safecron <<-'EOF'
#!/bin/bash
# remove -r function from crontab
# PATH
if [[ "$*" =~ "-r" ]] ; then
echo "SB! Dangerous..."
echo "Exit..."
exit 2
else
/usr/bin/crontab $*
exit 0
fi
EOF
chmod +x /usr/bin/safecron
grep "crontab='/usr/bin/safecron'" /etc/bashrc || echo "alias crontab='/usr/bin/safecron'" >> /etc/bashrc
每隔两周,在周6的22点30分执行一次mysql完全备份,注意%在crontab下要转义
30 22 * * 6 [ $(/usr/bin/expr $(/bin/date +\%W) % 2) -eq 1 ] && /usr/local/bin/backup_shell/mysql_fullback.sh
nginx 的配置中不支持if条件的逻辑与/逻辑或运算, 并且不支持if的嵌套语法, 我们可以用变量的方式来实现: 原理 就是用 SET 变.
set $rewriteflag 0;
if ($server_port = '80') {
set $rewriteflag 1;
}
if ($host = 'www.aaa.com') {
if ($uri ~* "^/api.*") {
if ($uri ~* "^/mobile.*") {
if ($uri ~* ".(js|css|html|gif|jpg|png|jpeg)$") {
if ($rewriteflag = '1'){
Python3.8的functools中新增了叫cached_property的装饰器,看名字应该大概知道什么作用了,看以下例子:
from functors import cached_property
class A:
@cached_property
def say(self):
print(‘****’)
return ‘hello’
a = A()
a.say
以上例子只有第一次访问say属性时才会打印****
Python中的is和==的区别,is时检查对象的标识符是否一致,也就是比较两个对象在内存中的地址是否一样,而==用来检查两个对象是否相等。例如在判断a is b时 相当于在判断id(a) == id(b),a == b 则是调用对象的__eq__方法,相当于a.__eq__(b)。
linux:
Nginx Method Limit
[xxx@xx conf]$ cat http_method_limit.conf
if ($request_method = PUT ) {
return 403;
if ($request_method = TRACE ) {
if ($request_method = DELETE ) {
通过zip函数同时迭代多个序列,其可迭代次数取决于长度最小的序列。
for a, b in zip(['a', 'b', 'c'], [1, 2, 3]):
print(a, b)
输出结果:
a 1
b 2
c 3
Nginx Upload Deny
[xx@xxx conf]$ cat deny_uploads.conf
location /uploads/ {
location ~ .*\.(php|php5)?$ {
deny all;
通过itertools.chain连续迭代多个序列,看以下例子:
from itertools import chain
a = ['a', 'b', 'c']
b = [1, 2, 3]
for x in chain(a, b):
print(x)
a
b
c
1
2
3
docker运行的镜像无法上网解决办法
无法上网一般是iptables的问题,是启动docker后iptables -F 的结果.
解决方法,shutdown -r now 即可解决/
python:
意外的逗号
>>> def f(x, y,):
... print(x, y)
...
>>> def g(x=4, y=5,):
>>> def h(x, **kwargs,):
File "<stdin>", line 1
def h(x, **kwargs,):
^
SyntaxError: invalid syntax
>>> def h(*args,):
def h(*args,):
使用rsync同步远程服务器上的文件时限制流量
/usr/bin/rsync -avrtH --bwlimit=2048 rsync://rsync.mirrors.ustc.edu.cn/centos/
/data/soft_repos/CentOS/
# --bwlimit=2048 限制同步时的流量 为20Mbps
not key
x = True
y = False
Output:
>>> not x == y
True
>>> x == not y
File "<input>", line 1
x == not y
双击查看原图 说明:
运算符的优先级会影响表达式的求值顺序, 而在 Python 中 == 运算符的优先级要高于 not 运算符.
我们都知道man可以查看命令的帮助手册,但是如果我们想要某个功能却不知道使用哪个命令呢?
可以用man -k command 搜索要执行的命令:
[root@manager ~]# man -k rsync
rsync (1) - a fast, versatile, remote (and local) file-copying tool
rsyncd.conf (5) - configuration file for rsync in daemon mode
wcursyncup (3x) - create curses windows
./redis-cli -h 10.10.10.11 -p 6401
save # 保存当前快照
config get * # 列出所有当前配置
config get maxmemory # 查看指定配置
config set maxmemory 15360000000 # 动态修改最大内存配置参数
crontab -e # 编辑周期任务
分钟 小时 天 月 星期 命令或脚本
1,30 1-3/2 * * * 命令或脚本 >> file.log 2>&1
echo “40 7 * * 2 /root/sh”>>/var/spool/cron/root # 直接将命令写入周期任务
crontab -l # 查看自动周期性任务
crontab -r # 删除自动周期性任务
cron.deny和cron.allow # 禁止或允许用户使用周期任务
service crond start|stop|restart # 启动自动周期性服务
自定义命令
假如你想创建完文件夹后自动进入该文件夹下面,那么可以自定义一个mkcd命令:
shell> vi ~/.bash_profile
mkcd() {
mkdir -p $1 && cd $1
安装以下脚本时,请注意服务器内是否有安装云锁,安装前请先卸载(教程)
ngx_http_addition_module在响应之前或者之后追加文本内容,比如想在站点底部追加一个js或者css,可以使用这个模块来实现,这个模块和淘宝开发的nginx footer模块有点类似,但是还是有不同.
今天,突然研发的同事说需要在公司网站页面底部添加一个流量统计的scripts,但是不打算改代码,所以希望能在代理的层面解决。这里只讨论如果是在nginx来实现,技术如何操作。但是具体是研发改代码,还是写在nginx,这个视情况而定。 这里可以使用 nginx 的 ngx_http_sub_module 模块完成。我这里是使用tengine,所以这个模块已经有了。如果没有的话,自己编译添加以下:方法如下:
nginx -V
(PHP 4, PHP 5, PHP 7)
原来 nginx版本是 nginx-1.0.12 太低版本 ,出现问题,,现在西部数码帮我升级成了 nginx-1.2.9 没有问题了