Linux 多条命令同时执行的一些姿势

命令之间用 ; 隔开

说明:各命令的执行结果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

root@ubuntu:/# echo $HOME; echo $LANG
/root
en_US.UTF-8

命令之间用 && 隔开

说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

root@ubuntu:~# cd Cloud && mkdir test
root@ubuntu:~/Cloud# ls
test
root@ubuntu:~/Cloud# cd Cloudaaa && mkdir test
-bash: cd: Cloudaaa: No such file or directory

命令之间用 || 隔开

说明:|| 是或的意思,只有前面的命令执行失败后才去执行下一条命令

/* && 不会输出 123 */
root@ubuntu:~/Cloud# cd Cloudaaa && echo '123'
-bash: cd: Cloudaaa: No such file or directory
/* 用 || 可以输出 123,因为 cd Cloudaaa 失败了 */
root@ubuntu:~/Cloud# cd Cloudaaa || echo '123'
-bash: cd: Cloudaaa: No such file or directory
123

命令之间用 | 隔开

说明:在命令行中,| 表示管道,管道可以将一个命令的输出导向另一个命令的输入,从而让两个(或者更多命令)像流水线一样连续工作,不断地处理文本流。

root@ubuntu:~/Cloud# env | grep LANG
LANG=en_US.UTF-8
LANGUAGE=en_US:

env 获取所有环境变量将结果传给下一个命令,所以用 grep 搜索 LANG 就会有结果显示。

Mysql开启慢查询记录耗时SQL语句

简述

  网站数据达到一定的数量级,就会有页面卡,出现50x等各种问题,mysql服务器CPU居高不下等症状。因为sql缓慢导致php缓慢,导致超时。这个时候应该先从mysql入手。就像看病一样,要先找病根,记录慢查询日志,就是观察期,观察到迹象我们就可以对症下药了。

配置参数说明

  主要靠三个参数来配置,我们用通俗的话来解释。

  1. 开关(不多说,关闭就不记录了)
    slow_query_log
  2. log存储位置(记录下来,我得知道你在哪吧,一般将它存放到mysql数据目录,也就是和你创建的数据库在同级目录)
    slow_query_log_file
  3. 超时时间 (我得让你知道多慢我忍不了)
    long_query_time

设置方法

方法一:全局变量设置

  1. 将 slow_query_log 全局变量设置为“ON”状态
    mysql> set global slow_query_log='ON'; 
  2. 设置慢查询日志存放的位置(默认在 mysql data 目录下)
    mysql> set global slow_query_log_file='slow.log';
  3. 记录超时1秒的sql语句
    mysql> set global long_query_time=1;

    注意:无需重启即可生效,但重启会失效。set global 改的参数是暂时的,想重启不变请配合修改mysql配置文件。

- 阅读全文 -

Typecho 首页静态化脚本

  哈喽大家好,捣鼓了下博客的优化,把博客主页生成静态文件html了,没有侵入主程序,完全不用担心升级问题,下面分享一下代码。

  1. 在站点根目录下创建或上传 build_index.php,访问这个文件就可以在根目录生成静态文件了。
  2. 更新缓存 http://test.com/build_index.php?password=123456可以在脚本里面设置你的密码,防止被他人利用发起CC攻击,频繁写文件造成服务器IO过高。
  3. 如果不想使用过期更新,可以从脚本里面去掉调用更新那句 script 代码,缓存过期时间修改 $expire 变量。
  4. 另外需要注意的是你的 index.html 要在 index.php 前面,否则不生效。Apache 修改 DirectoryIndex, Nginx 修改 index,IIS 配置默认文档。
<?php
/**
 * 首页静态化脚本
 * Author: Yusure
 * Blog: yusure.cn
 */
ini_set( 'date.timezone', 'PRC' );

/* 缓存过期时间 单位:秒 */
$expire = 86400;
/* 主动刷新密码  格式:http://test.com/build_index.php?password=123456 */
$password = '123456';
$file_time = @filemtime( 'index.html' );
time() - $file_time > $expire && create_index();
isset( $_GET['password'] ) && $_GET['password'] == $password && create_index();

/**
 * 生成 index.html
 */
function create_index()
{
    ob_start();
    include( 'index.php' );
    $content = ob_get_contents();
    $content .= "\n<!-- Create time: " . date( 'Y-m-d H:i:s' ) . " -->";
    /* 调用更新 */
    $content .= "\n<script language=javascript src='build_index.php'></script>";
    ob_clean();
    $res = file_put_contents( 'index.html', $content );
    if ( $res !== false )
    {
        die( 'Create successful' );
    }
    else
    {
        die( 'Create error' );
    }
}

GitHub下载地址:https://gist.github.com/yusureabc/34564707391b6275864b94b3cdc0088f

配置php的session存储到memcache或redis

  PHP默认配置是将session以文件形式存储在服务器上,网站访问量增加之后,单机的io是瓶颈,而且文本读取慢,除了默认的文本还可以存放到数据库,放到内存(memcache,redis)。不建议放到数据库里面,还是配置到内存里面比较爽,既提高了访问速度,又很好的实现了会话共享。

memcache 存储

如何配置

服务端配置很简单只要两条配置命令

  1. 在 php.ini 中全局设置
    session.save_handler = memcache
    session.save_path = "tcp://127.0.0.1:11211"
  2. 单一网站配置(在php入口处添加,用框架的项目只需要在配置文件里面修改就可以了)
    ini_set("session.save_handler", "memcache");
    ini_set("session.save_path", "tcp://192.168.48.128:11211");
如何与网站应用互通

memcached 服务是没有密码的,如果没有限制的暴露在外网,任何用户都是可以连接的。
-l 是监听的服务器IP地址,默认是127.0.0.1,任何ip访问0.0.0.0

- 阅读全文 -

本地 Git 项目推送至码云或GitHub

使用场景:本地有版本库,云端还没有,正打算push到云端。

  1. 命令 git init 初始化git仓库
  2. 命令 git add . (保存到缓存区)
  3. 命令 git commit -m "注释" (推送到本地库中)
  4. 在码云上新建版本仓库;
  5. 命令 git remote add origin + 仓库地址 (码云上新建项目点进去克隆或复制的链接)
  6. 命令 git pull origin master (把分支上的文件拉下来)
    可能遇到的问题:git pull 失败 ,提示:fatal: refusing to merge unrelated histories
    git pull origin master --allow-unrelated-histories
  7. 命令 git push origin master (推送到远端仓库也就是码云上)
    git push --set-upstream origin master 设置默认的云端仓库,以后只用 git push 即可!