0%

初始文件名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ls -lh 
total 5.5G
-rw-r--r-- 1 root root 193K Sep 28 09:38 20180908.txt
drwxr-xr-x 2 root root 4.0K Mar 7 16:37 batch
-rw-r--r-- 1 root root 160M Mar 13 16:35 batch_dispatcher.log.1
-rw-r--r-- 1 root root 17M Jan 8 12:00 batch_gen_scheduler.log.1
-rw-r--r-- 1 root root 3.5G Mar 13 16:36 batch_scheduler.log.1
-rw-r--r-- 1 root root 329M Jan 25 10:11 batch_scheduler_test.log.1
drwxr-xr-x 2 root root 4.0K Jan 21 13:54 batch_test
-rw-r--r-- 1 root root 30M Jan 25 10:10 batch_test_dispatcher.log.1
-rw-r--r-- 1 root root 137M Mar 13 16:29 boss_bi_access.log.1
-rw-r--r-- 1 root root 86M Mar 13 16:29 boss_bi_error.log.1
-rw-r--r-- 1 root root 185M Mar 13 14:32 boss_channel_access.log.1
-rw-r--r-- 1 root root 96M Mar 13 14:32 boss_channel_error.log.1
-rw-r--r-- 1 root root 77K Jan 21 14:45 monitor_once.log.1
-rw-r--r-- 1 root root 638M Mar 13 16:35 monitor_scheduler.log.1
-rw-r--r-- 1 root root 26M Dec 10 22:00 yqb_job.log.1
drwxr-xr-x 2 root root 4.0K May 29 2018 zhongcai
-rw-r--r-- 1 root root 348M Mar 13 16:35 zhongcai_scheduler.log.1
-rw-r--r-- 1 root root 688K Jan 28 10:51 zhongcai_test_access.log.1
-rw-r--r-- 1 root root 538K Jan 29 11:23 zhongcai_test_error.log.1
drwxr-xr-x 2 root root 4.0K Aug 21 2018 zhongcai_v1.4

需要将.log.1结尾的文件更改为.log
命令如下:

1
2
3
4
5
6
# for file in $(ls -lh | awk '$NF~/log/{print $NF}');do newfile=$(echo $file | sed 's/\.1//g'); mv $file $newfile; done
# 美化一下
for file in $(ls -lh | awk '$NF~/log/{print $NF}'); do
newfile=$(echo $file | sed 's/\.1//g')
mv $file $newfile
done

法二:

1
#  ls *.1 | sed -r "s#(.*).1#mv & \1#" | bash

注:
sed替换标记:
\1表示前面第一个左括号所表示的内容,\2表示前面第二个左括号中表示的内容,以此类推
&表示前面匹配到的内容

shell中实现多进程实际上就是将多个任务放到后台中执行而已,但是现在需要控制多进程并发的数量该如何实现呢?别急,我们一步一步来实现这个目标,首先从最原始的串行执行开始:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
start=`date +%s`

for i in $(seq 1 5); do
echo test
sleep 2
done

end=`date +%s`

time=$(($end - $start))
echo "time: $time"
阅读全文 »

redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。生产中我们主要用来存储用户的登录信息,设备的详情数据,以及会员签到点赞的信息等等。下面来记录下生产中redis的备份与恢复。
提到redis备份,就不得不提及redis的持久化的两种方式:RDB和AOF。

阅读全文 »

有时我们在Linux系统中经常会遇到文件名乱码的情况,比如下图这种情况:

乱码文件删除方法:

1
2
3
4
# 找到文件的inode
ls -i
# 根据inode删除
find -inum inode号 -delete

普通多线程修改同一数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import threading
import time

v = 0

def task(n):
global v
v = n
time.sleep(0.1)
print(v)

l = []
for i in range(10):
t = threading.Thread(target=task, args=(i,))
l.append(t)
t.start()

for p in l:
p.join()


'''
结果为
9
9
9
9
9
9 ...
'''
阅读全文 »

通过Redis客户端连接服务与进行操作默认是不需要密码的,任何人只要连上了服务器那么就可以操作Redis里的数据,而且还可以利用confit set来在线修改redis的配置实现攻击。所以对于暴露在公网中的Redis服务器,我们不光要设置密码,还要设置一个足够复杂的密码才可以,因为Redis的连接速度非常快,官方文档中介绍是每秒可以进行150k次破解。设置密码后客户端连接上Redis进行任何操作都需要验证后才可进行。

阅读全文 »

原因1. MySQL 服务宕了

判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长

1
2
3
4
5
6
7
$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 68928 |
+---------------+-------+
1 row in set (0.04 sec)
阅读全文 »