0%

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)
阅读全文 »

Mysql造成锁的情况有很多,下面我们就列举一些情况:

  1. 执行DML操作没有commit,再执行删除操作就会锁表。
  2. 在同一事务内先后对同一条数据进行插入和更新操作。
  3. 表索引设计不当,导致数据库出现死锁。
  4. 长事物,阻塞DDL,继而阻塞所有同表的后续操作。
阅读全文 »