那年那日那朵花

".......(o´ω`o)......"

几个有用的命令

2016-07-13 11:25 linux mysql

操作系统


在linux下查看md5值注意

echo -n "123" | md5sum
#注意要加-n参数 不然默认会带有换行符 md5值就会与其他程序计算得出的不一致,同理 md5sum XXX.txt 也是带有换行符的

查看服务器用户的shell的种类数量

cat /etc/passwd |awk -F: '{++S[$NF]} END {for (a in S) {printf "%30-s %s\n",a,S[a]}}'

查看TCP连接状态和数量

ss state all |awk '{++S[$1]} END {for(a in S) {printf "%11-s %s\n",a,S[a] }}' |grep -v State

查看TCP连接状态和数量(同上)并且按数量排序,两种实现方法

netstat -an |awk '/^tcp/ {array[$NF]++} END {for (key in array) print key,array[key]}' |sort -k 2 -rn
netstat -an |awk '/^tcp/ {print $NF}' |sort |uniq -c |sort -rn

查看80端口访问IP前20

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

用TCPDUMP抓包,抓取源地址为159.191.1.9到目的端口为8084的包

tcpdump -vv src host 159.191.1.9 and dst port 8084
可以用-nn参数来直接显示主机ip和端口的信息

查看cpu磁盘分页等信息

yum install dstat
dstat

删除乱码文件

ls -li
find -inum 123324 -delete
find . -maxdepth 1 -type f -inum 123325 -delete

统计数据文件最后一列的平均值,并且输出大于平均值的数量,数据文件以逗号为分隔符。

#!/bin/bash
num=`cat dfin.log|wc -l`
avg=`cat dfin.log|awk -F\, -v num=$num '{total+=$NF} END {print total/num}'`
echo $avg
cat dfin.log|awk -F\, -v avg=$avg '{ if ($6 >= avg) ++a } END {print a}'

批量重命名文件后缀名,将当前目录下文件全部重命名为后缀名为log的文件

find . -type f -print0 |xargs -0 -i mv {} {}.log

mysql相关的一些命令


复制新表根据原来的表结构(不拷贝表数据)

 create table NEW_TABLE like OLD_TABLE;

复制表(包括表结构和数据)

#先搞表结构,再复制数据
create table NEW_TABLE like OLD_TABLE;
insert into NEW_TABLE  select * from OLD_TABLE;

心情

mysql的root用户没法给用户赋权限的问题解决办法

mysql> select * from mysql.user where User='root' and Host='localhost'\G;

看一下root用户的Grant_priv 是不是为Y 这种时候多数情况下就是N了。那么要做的事情很简单,就是把他的这个字段改为Y就可以了。

mysql> update mysql.user set Grant_priv='Y' where User='root' and Host='localhost';
mysql> flush privileges;

然后重新退出重新登录就可以给其他用户授权了。。。。

另外django中解决竞态查询的方式可以使用select_for_update的方法来操作,这个必须是处在一个事物中。但是这样可能会带来性能问题。同时也可以使用F()方法来直接Update,两种方法可以根据实际情况来操作使用。方法如下,但是如果用的mysql数据库的话,数据库引擎必须是InnoDB

with transaction.atomic():
    r = ConfigInfo.objects.select_for_update().get(pk=5)
    time.sleep(20)
    r.status = "d"
    r.save()

fdisk后创新partprobe

haproxy中修改HTTP的头信息
例如
reqirep ^Host:\ xx.xx.xx.xx:81 Host:\ t1.cloud.paas
reqirep ^Host:\ (.*) Host:\ t1.cloud.paas

docker 一些启动命令


docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_ERLANG_COOKIE='myrabbit' -p 8080:15672 -p 5672:5672 rabbitmq:3-management

通过socket接口文件进入控制haproxy


socat XXX.sock readline
prompt

linux下命令行的一些快捷键操作


ctrl + a 移动到行首
ctrl + e 移动到行末
ctrl + w 小写删除光标前面的那个单词
ctrl + u 剪切光标到行首的内容 也可以当删除
ctrl + k 剪切光标到行末的内容 也可以当删除
ctrl + y 黏贴剪切内容
ctrl + r 搜索历史命令 可以敲多次来查询同一内容

vi 的一些实用快捷键
G 文本末尾
gg 文本开头
M 文本的屏幕中间
dG 从光标那行开始删除至文本末尾
dw 删除光标后一个单词
dW 删除光标所在行至行末的内容
ctrl + f 下一页
crtl + b 上一页
v 上下键选中行 d 或者 y 剪切或者复制

consul集群的安装


#下载并解包consul
./consul agent -server -bootstrap-expect 2 -data-dir=/root/consul_workdir/data1/ -node n1 -bind=192.168.1.15 -client=0.0.0.0 -ui
./consul agent -server -bootstrap-expect 2 -data-dir=/root/consul_workdir/data2/ -node n2 -bind=192.168.1.188 -client=0.0.0.0 -ui
#在188服务器上
#加入集群
./consul join 192.168.1.15
查看成员
./consul  members
Node  Address             Status  Type    Build  Protocol  DC   Segment
n1    192.168.1.15:8301   alive   server  1.2.2  2         dc1  <all>
n2    192.168.1.188:8301  alive   server  1.2.2  2         dc1  <all>
curl 127.0.0.1:8500/v1/catalog/nodes?pretty
[
    {
        "ID": "a7aab84f-ad64-ccd0-4ce4-15b7d62e9e32",
        "Node": "n1",
        "Address": "192.168.1.15",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "192.168.1.15",
            "wan": "192.168.1.15"
        },
        "Meta": {
            "consul-network-segment": ""
        },
        "CreateIndex": 5,
        "ModifyIndex": 7
    },
    {
        "ID": "9b4beef1-0403-a708-07b7-6bcc80d1e224",
        "Node": "n2",
        "Address": "192.168.1.188",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "192.168.1.188",
            "wan": "192.168.1.188"
        },
        "Meta": {
            "consul-network-segment": ""
        },
        "CreateIndex": 6,
        "ModifyIndex": 8
    }
]
curl -XPUT  http://192.168.1.188:8500/v1/agent/service/register  -d '{"id": "testnode55","name": "node","address": "192.168.1.188","port": 9100,"tags": ["p","d"],"checks": [{"http": "http://192.168.1.188:9100/metrics","interval": "5s"}]}'
curl -XPUT  http://192.168.1.188:8500/v1/agent/service/register  -d '{"id": "testnode","name": "node","address": "192.168.1.15","port": 9100,"tags": ["p"],"checks": [{"http": "http://192.168.1.15:9100/metrics","interval": "5s"}]}' 
curl -XPUT  http://192.168.1.188:8500/v1/agent/service/register  -d '{"id": "docker118","name": "docker","address": "192.168.1.188","port": 9323,"tags": ["dockertest","monitor"],"checks": [{"http": "http://192.168.1.188:9323/metrics","interval": "5s"}]}'
#checks 是指的在consul中的service检查机制,如果填错,那么在consul的web界面中会有红色告警  在promthues中的consul_sd_config中配置的services列表指定的就是上述name字段。另外consul中是靠id字段为主键的,注意不要重了。
curl -XPUT  http://192.168.1.188:8500/v1/agent/service/deregister/docker118
# 删除 上面叫做docker118的service
http://192.168.1.188:8500/v1/agent/services?pretty #查看已经注册了的服务

Cloudhu 个人随笔|built by django|

沪ICP备16019452号-1