• Host '10.0.2.2' is not allowed to connect to this MariaDB server

    Host '10.0.2.2' is not allowed to connect to this MariaDB server
    

    mysql的root用户,默认只允许本地访问。当使用客户端连接远程mysql服务器,出现上面错误。只要在mysql.user表添加远程用户即可.

    • 进入mysql命令行界面
    ➜  ~  mysql -u root -p
    Enter password:
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 13
    Server version: 5.5.41-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    
    • 执行下面insert
    insert into mysql.user(Host,User,Password) values("%","root",password("root"));
    
  • 内外网同时访问阿里rds数据库

    阿里对它的rds数据库作了访问限制,内外网不能同时使用,并且切到外网访问,会收取流量费。每次更新数据库时,要先切到外网模式,再链接rds进行操作,太麻烦了. 怎么做可以让内网、外网同时访问? 想到了将rds的端口映射到ecs,再访问ecs,即可访问rds.

    在ecs主机上,运行下面命令,将rds映射到外网

    ssh -NfgT  -L 3306:rds地址:3306 用户名@localhost
    

    更新完之后,再kill掉上面命令.

  • debian创建用户没有宿主目录

    在debian系统中,以useradd创建用户,默认不会创建密码和宿主目录. debian建议用adduser创建用户,它会提示创建初始密码和目录.

    root@xxxx:/home# adduser wyq
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_CTYPE = "zh_CN.UTF-8",
        LANG = "en_US.UTF-8"
        are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    Adding user `pkadmin' ...
    Adding new group `wyq' (1003) ...
    Adding new user `wyq' (1002) with group `wyq' ...
    Creating home directory `/home/wyq' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for wyq
    Enter the new value, or press ENTER for the default
        Full Name []:       
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
    Is the information correct? [Y/n] y
    
  • chkconfig简介

    chkconfig是一种简单的命令行工具,用于帮助管理员对/etc/rc[0-6].d目录层次下的众多的符号链接进行直接操作。

    语法

    chkconfig --list [name]
    chkconfig --add name
    chkconfig --del name
    chkconfig [--level levels] name <on|off|reset>
    chkconfig [--level levels] name
    

    --list 显示系统服务的运行状态(on或off)
    --add 增加系统服务
    --del 删除系统服务
    --level 指定系统服务在哪个执行等级中开启或关闭
    等级0表示:表示关机
    等级1表示:单用户模式
    等级2表示:无网络连接的多用户命令行模式
    等级3表示:有网络连接的多用户命令行模式
    等级4表示:不可用
    等级5表示:带图形界面的多用户模式
    等级6表示:重新启动

    基本用法

    • 查询当前所有自动启动的服务
    chkconfig --list
    chkconfig --list [name] //查询特定服务
    
    • 开机启动开启/关闭
    chkconfig httpd on/off
    
    • 指定服务运行等级
    chkconfig --level 35 httpd on/off
    

    设定httpd在等级3和5为开机运行服务.

    • 新增服务
    chkconfig --add httpd
    

    加入到chkconfig列表

    • 删除服务
    chkconfig --del httpd
    

    从chkconfig列表移除服务

  • chkconfig配置开机启动

    新建脚本

    touch /etc/init.d/echo_msg
    
    • 添加内容
    #!/bin/zsh
    #chkconfig:2345 61 61
    #description:runing echo
    echo "I am runing"  > /home/wyq/start.txt
    

    前三行是chkconfig的格式,不可以省略,否则会出现"服务echo_msg,chkconfig不支持".

    赋予执行权限

    chmod a+x echo_msg
    

    加入chkconfig列表

    chkconfig --add echo_msg
    

    设置开机启动

    chkconfig echo_msg on
    

    重启系统之后, 在/home/wyq目录下发现start.txt文件,表示启动成功.

  • 服务chkconfig不支持

    自定义脚本启动脚本,放在/etc/init.d/目录下. 并使用chkconfig设置为开机启动. 出现了"服务echo_msg,不支持chkconfig"

    原因是chkconfig对脚本格式有要求,必须在脚本开头添加chkconfig描述

    #!/bin/bash
    #chkconfig:2345 61 61
    #description: echo_msg开机测试
    
    • 第一行,指明脚本解释程序
    • 第二行chkconfig,2345指定脚本运行等级,61和61指定启动和关闭序号
    • 第三行description 描述信息
  • linux启动日志

    /var/log/boot.log
    
  • 查看linux运行级别

    ➜  ~  runlevel
    N 5
    
  • top命令查看单个进程

    • 获取进程pid
    ➜  ~  pgrep zsh  
    2433
    2720
    11961
    12318
    
    • 查看指定进程
    ➜  ~  top -p 12318
    

    输出

    top - 21:57:06 up  5:35,  5 users,  load average: 0.27, 0.16, 0.15
    Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  6.6 us,  0.7 sy,  0.0 ni, 91.5 id,  1.1 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem:   4048232 total,  2410336 used,  1637896 free,   265268 buffers
    KiB Swap:  4079612 total,        0 used,  4079612 free,  1342440 cached
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND      
    12318 wyq       20   0  141596   6120   3788 S  0.0  0.2   0:00.09 zsh          
    
  • 浏览器拦截js弹出框

    示例一

    点击button触发click事件,click函数发送ajax请求获取数据,成功之后打开新窗口. 结果发现浏览器拦截了新窗口.

    $("#btn").click(function(e){
        $.getJSON("/data.json", function(rp){
            window.open("http://www.baidu.com");
            /*
            var shtml =
                '<form action="/" target="_blank" style="display:none;"> '+
                '<button type="submit" value="submit">submit</button> '+
                '</form> ';
            shtml = $(shtml);
            $("body").append(shtml);
            shtml.submit()
            */
        });
    });
    </script>
    <html>
    
    • 示例二
      用jquery.pubsub.js发布/订阅消息新开窗口. 不会被阻止
    <script src="/jquery.pubsub.js" type="text/javascript"></script>
    $(function(){
        $("#btn").click(function(e){
            $.publish("msg");
        });
        $.subscribe("msg", function(param){
            window.open("http://www.baidu.com");
        })
    })
    
    • 示例三
      将打开行为放在click()里,发现浏览器没有组织新窗口
    <script src="/jquery.pubsub.js" type="text/javascript"></script>
    $(function(){
        $("#btn").click(function(e){
            window.open("http://www.baidu.com");
        });
    })
    

    用户行为浏览器不会阻止,js调用触发的行为浏览器会阻止.