macOS 10.11+ SIP(rootless) 问题

macOS 10.11 开始加入了 System Integrity Protection,也就是 rootless 保护机制,使得很多系统目录无法进行修改,root 权限也进行了限制。但我们有些时候需要处理一些文件或软件,比如删除系统自带的 Apache、PHP 等,那我们需要临时关闭 SIP 机制。

解决办法

重启系统,按住Command + R,进入恢复模式,打开 Terminal 终端执行命令:

csrutil disable # 关闭SIP csrutil enable # 开启SIP

PHP 随机合并数组并保持原排序

场景

原有帖子列表 A,现需在A中推广新业务 B,则需要在 A 列表中 1:1 混合 B 的数据,随机混合,但需保持 A 和 B 两列表原来的数据排序。具体参考下面示例的效果。

原理

  • 获知总共元素数量 N;
  • for 循环 N 次,取随机数;
  • 根据随机数依次从头获取 A 或 B 的值,推入新数组中;

Linux 命令 —— iostat I/O 和 CPU 监视工具

iostat 用于监控统计系统输入输出设备和 CPU 的使用情况,英文 I/O statistics 的缩写。

它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况。同 vmstat 一样,iostat 也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat 属于 sysstat 软件包,所以使用前需先安装 sysstat

命令格式

1
iostat [参数] [间隔时间] [报告次数]
  • 间隔时间:每次报告的间隔时间(秒)
  • 报告次数:显示报告的次数

Nginx 设置未绑定域名禁止访问

默认情况下,Nginx 允许直接以 IP 的方式就能直接访问到网站,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的服务器 IP)。这样容易暴露一些服务器上的网站,那么我们怎么设置 Nginx 禁止这些行为呢?

1
2
3
4
5
server {
    listen 80 default_server;
    server_name _;
    return 404;
}

为 Nginx 添加模块

已安装的 Nginx,需要添加一个新模块,需要怎么弄呢?

步骤

以模块 nginx-sticky-module-ng 为例

  • 查看 Nginx 上次编译安装参数
1
2
3
4
5
6
[~]$ nginx -V
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module

SSH 无密码登录远程机器

场景

在机器A,通过远程机器B上的账户C,免密登录远程机器B

步骤:

  • 在机器A上生成公钥
1
2
ssh-keygen -t rsa
# 一路回车...

Nginx 日志按日期归档脚本

日志归档脚本

 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
31
32
33
34
35
36
37

查看 CentOS 系统版本

方法一

lsb_release -a

1
2
3
4
5
6
7
# yum install redhat-lsb -y
# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.7 (Final)
Release:	6.7
Codename:	Final

MySQL 函数 —— GROUP_CONCAT

GROUP_CONCAT 函数返回带有来自一个组的连接的非 NULL 值的字符串结果。该函数是一个增强的 Sybase SQL Anywhere 支持的基本 LIST() 函数。

语法结构

1
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])

DISTINCT:去除重复值 expr [,expr ...]:一个或多个字段(或表达式) ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]:根据字段或表达式进行排序,可多个 SEPARATOR str_val:分隔符(默认为英文逗号)