systemd 清理不必要的service

执行systemctl status时,发现如下输出:

➔ systemctl status
● hostname
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Tue 2018-10-30 06:51:31 CST; 1 years 9 months ago
   CGroup: /
           ├─1 /usr/lib/systemd/systemd --system --deserialize 21

state的状态是degraded,查了一下发现是由于我的nginx service未启动,因为前几天手动编译安装了nginx,并且新建了一个nginx@1.18.service,所以这个service其实没用到了,把它清理掉吧:

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] # and symlinks that might be related
rm /usr/lib/systemd/system/[servicename] 
rm /usr/lib/systemd/system/[servicename] # and symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

编译安装PHP扩展:imagick

由于wordpress建议安装imagick,而它默认没有加入到php源码中,于是记录一下自己编译安装imagick扩展的过程:

wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar -xvf imagick-3.4.4.tgz && cd imagick-3.4.4

/usr/local/opt/php@7.4/bin/phpize

# 这个目录似乎没用到
mkdir /usr/local/opt/imagick

./configure --prefix=/usr/local/opt/imagick --with-php-config=/usr/local/opt/php@7.4/bin/php-config

报错:

checking ImageMagick MagickWand API configuration program... checking Testing /usr/local/bin/MagickWand-config... Doesn't exist
checking Testing /usr/bin/MagickWand-config... Doesn't exist
checking Testing /usr/sbin/bin/MagickWand-config... Doesn't exist
checking Testing /opt/bin/MagickWand-config... Doesn't exist
checking Testing /opt/local/bin/MagickWand-config... Doesn't exist
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.

解决办法:

yum install -y ImageMagick-devel

最后:

make && make install

vi /usr/local/etc/php/7.4/php.ini

# 在最后加入:
extension=imagick.so

# 查看是否OK:
/usr/local/opt/php@7.4/bin/php -m | grep imagick

重启php-fpm生效:

systemctl restart php-fpm@7.4

记几次面试他人的经历

最近这段时间由于领导没空,让我临时当面试官👀,虽然我也不是什么大牛,但是还算读得起我这4、5年的工作经验吧,记录一下我当面试官的一些经历,可能由于我出的面试题是真正我自己出的,而不是网上copy的那些,导致很多面试者表现不是特别好。出于某些原因,所有人名字均用字母表示。

Continue reading "记几次面试他人的经历"

MySQL 死锁产生的原因和“超卖”现象

死锁其实很好理解,就是两个会话分别在等待对方占有锁的释放。这个概念不仅仅是MySQL数据库中的,计算机中一些资源的占有和释放,都可能会产生死锁。

在MySQL数据库中,举个例子,由于代码设计不当,比如两个事务会话中, 都使用读锁去占有一条数据,但是两个会话却都想更新这条数据,如果是并发请求,则会产生死锁,看以下SQL执行顺序:

begin;
select * from goods_sku where id = 1 in share mode;
update goods_sku set stock = stock - 1 where id = 1 and stock > 0;
commit; 

Continue reading "MySQL 死锁产生的原因和“超卖”现象"