zoukankan      html  css  js  c++  java
  • 工作中记录的命令和知识点(不断更新)

    linux命令收集
    mkdir     创建目录   -p递归创建    mkdir -p /data/aaa.txt
    ls –l 显示目录或者文件  -F给不同文件结尾加不同的符号 -t按修改时间 -r翻转排序  -lrt  -R显示当前目录下的内容 -i 显示inode信息
    cd    切换目录层次
    echo   打印输出内容
    runlevel 查看系统运行级别
    cat   查看文件内容  -n 显示行号(cat -n less -N nl grep -n .)
    cat file1 file2 > file3  两个文件合并成一个
    paste  file1  file2 >file3  两个文件行合并
    cp  -a  拷贝文件或者目录    cp 直接覆盖不提示或者全路径 -l 创建硬链接  -s  创建软链接
    rm -f   强制删除文件  -r递归删除   删除文件或者目录  -fr删除指定的目录和文件
    head     头部  显示文件头部 -n 行数  默认头部10行     head -2 test.txt
    tail    尾部  显示文件尾部 -n 行数  默认尾部10行      tail -1 test.txt
    grep       (过滤)-v 排除      grep -v 排除内容  文件路径    grep -v aaa  test.txt
    sed    取各种内容 -n取消默认输出  p打印 d删除    sed -n /aaa/p test.txt
    LANG=en  临时调整字符集
    vim /etc/sysconfig/i18n  字符集路径
    alias   查看别名  unalias 删除别名   cat ~/.bashrc 系统别名位置  设置别名 alias cp='cp -i'
    which     查看命令的路径
    find  查找命令  -type (f d) -name "f" 按名字查找 -mtime 安装修改时间查找 
           -maxdepth level 查找目录的深度
    find / -type f -name "cat"
    find / -name "test.txt" -exec rm -f {} ;  find / -name "test.txt" |xargs rm -f  查找到删除
    find /root/ -type f -name "*.log" -mtime -3|xargs rm -f    删除三天前数据
    sed -n '12,16p' cc 打出12-16行
    sed -i ‘s#aaalinux#windows#g’ cc   替换内容
    find / -type f -name "cc"|xargs  sed -i s#aaalinux#windows#g 查找并修改
    awk '{if(NR>3&&NR<26) print $0}' cc
    awk -F ":" '{print $1}' /etc/passwd
    xargs  用于把find/ls的输出命令交给后面处理
    find /tmp/aaa -type f ! -name "passwd"|xargs rm  除了passwd其他都删除
    seq    打印数字序列echo {1..}
    man    查看命令及配置文件等帮助
    touch    创建文件或者修改文件时间戳
    pwd    显示当前的路径
    tree   -L显示层数  -d列目录 查看目录结构
    tail -f /var/log/maillog  查看实时文件变化
    more 查看文件但是不能向上回滚
    less  查看文件可以向上回滚
    useradd   添加用户 –e 用户终止时间 –c 注释 –d指定家目录 –s指定sh
    useradd xiao && echo 123456 | passwd --stdin xiao   快速添加用户和密码
    usermod 修改用户信息
    userdel  删除用户
    groupadd 添加组 –g
    passwd  --stdin  修改用户密码,如果不指定用户,则修改当前用户密码,普通用户只能改自己的密码
    chage    命令是用来修改帐号和密码的有效期限。
    whoami   查看当前命令行终端用户
    w   查看是哪个用户登录且使用情况
    su   切换用户角色 注意要带上 -
    sudo  让普通用户可以拥有指定用户root的权限的命令
    yum    包管理工具  解决rpm包的依赖
    yum info xx 查看软件详细信息
    yum list all xx 查看软件安装版本    
    rpm  -ivh 软件安装命令   rpm -ivh 包名.rpm
    rpm -ql xx 查看软件安装文件路劲
    chkconfig   查看设置开机自启动软件的命令 -add/ --list
    netstat 查看网络状态-lntup 或-an
    [--tcp |t] [--udp|-u] [--listening|-l ][--all|-a] [--numeric|-n] [--program|-p]
    lsof  -i :port 查看端口 ,list open files
    uname -a -r -m 查看系统版本,内核版本
    getconf LONG_BIT  查看系统位数
    halt 关机(init 0)
    reboot重启(init 6)
    tar  gzip打包组合zcvf,解包组合zxvf
           bzip打包组合jcvf,解包组合jxvf
           z(gzip),c(create),v(verbose),file,x(extract),j(bzip)
           --exclude –X(--exclude-from),-C指定目录解压,-p保持属性
    tar zcvf 筐 苹果
    tar zcvf aaa1.tar.gz  --exclude=aaa/time.sh ./aaa   排除打包
    tar tf aaa3.tar.gz    查看包里的内容
    tar zcvfX aaa3.tar.gz test.txt ./aaa  排除内容打包
    
    tar xf aaa1.tar.gz   解包
    tar xf aaa1.tar.gz -C /tmp/  解包指定目录
     
    cut  按列切割 –d 指定分隔符,-f数字选列,-c按字符
    cut -c 1-4 取字符
    
    wc   -l 统计行号   cat –n file|tail -1
    echo –n 不换行输出 
    sh -x file 查看脚本运行过程
    sh -n file 检查脚本语法
    dd命令创建虚拟镜像文件
    # 从/dev/zero设备创建一个容量为 256M 的空文件virtual.img:
    $ dd if=/dev/zero of=virtual.img bs=1M count=256
    $ du -h virtual.img
    dd if=/dev/cdrom of=/root/centos6.9.iso   克隆系统
    echo -e 处理特殊字符
    若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
    a 发出警告声;
     删除前一个字符;
    c 最后不加上换行符号;
    f 换行但光标仍旧停留在原来的位置;
    
     换行且光标移至行首;
    
     光标移至行首,但不换行;
    	 插入tab;
    v 与f相同;
    \ 插入字符;
    
    nn 插入nnn(八进制)所代表的ASCII字符;
    tac 反转内容输出
    date  :显示时间
    stat  文件详细属性
    useradd 添加用户 –g –u –c –s  -d –G –M –D
    userdel 删除用户  -r
    usermod 修改用户
    groupadd 添加用户
    groupdel  删除组
    passwd  修改密码   --stdin
    chage    修改密码过期属性  -l  -E
    su       切换用户角色   -   -c
    visudo   编辑sudo配置文件
    id       查看用户身份
    w   who  lastlog  whoami  finger
    chmod  目录授权     -R 目录及子目录   
    chown  修改目录所属主
    chattr +i(-i) 文件名     锁定文件(取消锁定)不可删除与清空
    chattr +a(-a) 文件名   添加内容(只可添加内容)
    使用lsattr  文件名   查看文件的特殊权限
    root用户默认创建的目录权限是755,文件权限是644
    普通用户默认创建的目录权限是775,文件权限是664
    umask   禁止权限
    umount  卸载命令  -lf强制卸载
    dd  convert and copy a file (dd if=/dev/sda of=mbr.bin bs=512 count=1)
    mkfs  格式化命令  -t  文件系统类型mkfs.ext3
    df  -h 查看磁盘挂载信息
    du –sh 查看文件及目录总大小    du -sh * 查看每个目录的大小
    time  计算一个任务执行时间
    uniq  去重  -c 计数
    sort 排序(ascll) -r 逆序  -n 按数值 -u 除去重复项 -t 指定字段分隔符 -k 指定排序字段
    sort -t':' -k 3 -n /etc/passwd 
    date  -s  修改时间
    chgrp   改变用户组  -R 递归
    fgrep -r "hello world" ./* 查询当前目标下,包含hello world的文件
    磁盘分区:
    fdisk 磁盘分区的命令  -l 查看列表  小于2T的分区工具
    parted GUN磁盘分区工具,适合大于2T的分区工具
    mount 挂载的命令 –t  文件系统类型 –o挂载的选项 –a
    umount 卸载的命令 –lf强制卸载
    mkfs 格式化命令  -t 文件系统类型mkfs.ext3
    lsof –i:端口号   查看端口号对应的协议
    netstat  -lntup   查看协议对应的端口号
    ethtool -i 网卡名  查看网卡名
    env  显示所有的环境变量
    export 显示当前环境变量
    locale 显示系统编码  
    tee 记录消息 (覆盖) -a (追加)
    at  定时任务   at -f test1.sh 00:28
    atq  显示定时任务
    atrm  56 删除定时任务
    test -f file && echo true || echo false    测试文件是否存在  -z  字符串的长度为0  [ -f file  ]
    [ -z ] 长度为0
    [ -n ]长度不为0
    rename    批量修改扩展名
    local tmp 局部变量定义
    stat:文件/文件系统的详细信息显示
    file :查看文件类型
    tr 用来标准输入中替换或者删除操作进行字符转换。 echo ABcd|tr "[A-Z]" "[a-z]"
    export HISTTIMEFORMAT='%F %T'   history显示时间
    sar 获取系统的CPU、运行队列、磁盘IO、分页(交换区)、内存、CPU中断、网络等性能数据
    top 显示系统中各个进程的资源占用状况
    htop   高级top yum install -y htop
    iostat 对系统的磁盘IO操作进行监视。显示磁盘读写操作的统计信息
    free 监控linux内存使用的指令 -m 兆为单位  -g G为单位
    当观察到free栏已为0的时候,表示内存基本被吃完了,那就释放内存吧。
    dmidecode -t 1 查看设备信息
    dmidecode -s system-serial-number 查看序列号
    
    释放内存:
    sync
    echo 3 > /proc/sys/vm/drop_caches
    uptime 统计系统当前的运行状况
    rename "jpg" "txt" *.jpg    把jpg改为txt
    shuf  -n3     随机取3行
    mail -s "`date +%F-%T`$CHARS" 490004487@qq.com </tmp/messages.txt 发送邮件
    nc -v -z -w2 192.168.0.3 1-100  扫描0.3 1-100的tcp端口
    nc -nvv 192.168.0.1 80 //扫描 80端口  指定端口
    nmap -sP 192.168.160.0/24|grep Nmap|awk '{print $NF}' 查看网段主机
    dstat 多类型资源统计工具
    -c: 显示cpu相关信息
    -C #,#,...,total
    -d: 显示disk相关信息
    -D total,sda,sdb,...
    -g:显示page相关统计数据
    -m: 显示memory相关统计数据
    -n: 显示network相关统计数据
    -p: 显示process相关统计数据
    -r: 显示io请求相关的统计数据
    -s: 显示swapped相关的统计数据
    --top-cpu:显示最占用CPU的进程
    --top-io: 显示最占用io的进程
    --top-mem: 显示最占用内存的进程
    --top-latency: 显示延迟最大的进程
    - -raw:显示裸套接字
    - -ipc:进程间通信信息
    实例1:显示cpu、进程、内存、io线程以及swap等相关信息
    dstat -c -d -g -m -n -p -r -s
    实例2:显示系统中cpu和io线程以及内存使用的情况
    dstat --top-cpu --top-io --top-mem
    实例3:显示tcp、udp协议和raw和socket套接字以及进程间通信的信息
    dstat --tcp --udp --raw --socket --ipc
    
    
    PS1='[e[32;1m][u@h W]$ [e[0m]'  改变提示符颜色文件路径:/etc/bashrc
    显示路径则把W改成w:
    
    kill -9 PID 强制杀进程
    kill  PID   杀进程
    pkill  进程名    杀进程
    vi/vim 记事本编译器  
    显示行号:set nu 删除当前行dd(n行 dd),拷贝当前行yy粘贴p切换到尾部G到文件头部gg退出保存:wq强制退出不保存:q!行首数字0行尾shift+a返回u向下搜索/字符向上搜索?字符删除全部dG
    
    定位行号:vim +行号 test.sh
    [root@localhost ~]# date +%F %T
    2013-04-14 03:03:39
     
     mysql自动补全:
    在mysql下执行:rehash;
    
    小结:
    sed   擅长打印行
    awk   擅长打印列
    修改主机名的步骤:
    1)hostname jianlai
    2)vi /etc/syscofnig/network
    3)  vi /etc/hosts
    修改网卡:编辑配置文件,然后/etc/init.d/network restart   重启网卡
    ifup eth0     启动网卡
    ifdown  eth0  关闭网卡
    ifconfig eth0:X 10.0.0.23/24 up 配置别名ip
    ifoconfig  eth0:X down  停掉
    ip addr add 192.168.160.138/24 dev eth0  添加临时ip
    iwconfig 查看无线网卡
    配置默认网关:
    route add default gw 10.0.2.3    添加默认网关
    route del default gw 10.0.2.3     删除默认网关
    如果你添加/修改默认网关时遇到这个问题。 
    原因:你要添加的网关不在你主机所在的网段。 
    解决方法: 
    比如你要添加的网关是10.57.50.1 
    sudo route add 10.57.50.1/32 dev eth0 
    然后再 
    sudo route add default gw 10.57.50.1
     显示系统路由
    ip route show
    设置系统默认路由
    ip route add default via 192.168.1.1
    删除路由
    ip route delete 192.168.1.0/24 dev eth0
    
    DNS域名解析:
    nslookup
    dig
    host
    
    url下载:
    wget
    curl
    
    网络检查:
    Ping
    
    路由追踪:
    traceroute
    
    端口扫描:
    nmap
    nc
    telnet    可能防火墙
    
    抓包工具:
    tcpdump
    tcpdump -i eth0
    tcpdump -i p2p1 dst port 53 -c 1000 -w asd.pcap
    tcpdump -i p2p1 dst port 53 -vv -nn
    
    linux系统运行级别:
    0 关机模式
    1 单用户模式
    2 无NFS的多用户模式
    3 文本模式
    4 无用
    5 图形化
    6 重启
     
    elinks 实现一个纯文本界面的浏览器 yum install -y elinks
    
    符号:
    : 多个命令的分隔符
    /  根或者路径的分隔符
    >  标准输出重定向(数据流朝着箭头的方向流动),覆盖原来的文件
    >> 追加重定向
    <   标准输入重定向   指定 输入内容  后跟文件名
    <<   输入重定向  
    ..  上一级目录
    ~  用户的家目录
    `` 等于$()
    | 管道  通过管道把前一个命令的输出交给后一个命令继续处理
    {  }  大括号配合echo打印序列echo{}
    .  当前目录 (隐藏文件的标识)
    正则表达式:
    ^  意思是什么开头  例如^aaa  就是以aaa开头
    [^aaa] 不是aaa的内容
    $  意思是以什么结尾 例如aaa$  就是以aaa结尾
    ^$  一起就是空行
       让一个字符脱掉马甲,还原本来意义  ls -Fl |sed -n '//$/p'
    grep -Ev "^#|^$" /etc/sysconfig/sshd
    egrep -v "^#|^$" /etc/sysconfig/sshd
    .   代表且只能代表任意一个字符
    *   例0* 重复0个或多个前面的一个字符
    .*    匹配所有字符。^.* 以任意多个字符开头
    [ ]   字符集合的多个字符
    [^word]  非     不包含word
    ~ 匹配
    !~ 不匹配
    a{n,m} 重复n到m次,前一个重复的字符
    a{,m} 重复至多m次,前一个重复的字符
    {n,}   重复至少n次
    {n}    重复n次
    卸载yum安装的软件  yum remove
    文件修改显示时间:
    [root@localhost aaa]# ls -l --time-style=long-iso
    total 4
    -rw-r--r--. 2 root root  0 2017-02-13 06:25 aaafile
    取ip地址:
    ifconfig eth0|grep " inet add"|cut -d":" -f2|cut -d " " -f1
    ifconfig eth0|grep " inet add"|awk -F":" '{print $2}'|awk -F " " '{print $1}'
    ifconfig eth0|awk -F "[:B]" 'NR==2{print $2}'
    ifconfig eth0|sed -n '/inet addr/p'|sed 's#.*addr:##g'|sed  's#  Bc.*$##g'
    ifconfig eth0|sed -n 's#^.*addr:(.*)  Bca.*$#1#gp'
    取得字符长度:
    ${#word}  
    wc -L
    expr length
    awk
    取数组中元素:${arr[@]}
    判断是否为数字:
    if [[ `expr match "$1" "[0-9][0-9]*$"` == 0 ]]
    判断文件扩展名:
    if expr "$1" : ".*.pub" &>/dev/null
    将目录权限转换为数字:stat -c %a /etiantian
    磁盘分区;
    parted的交互模式:
    #  parted  /dev/sdb
    GNU  Parted  1.8.1
    Using  /dev/sdb
    Welcome  to  GNU  Parted!  Type  ‘help’  to  view  a  list  of  commands.
    (parted) mklabel gpt
    将MBR磁盘格式化为GPT
    (parted) mkpart primary 0 100
    划分一个起始位置为0大小为100M的主分区
    (parted) mkpart primary 100 200
    划分一个起始位置为100M大小为100M的主分区
    (parted)  mkpart  primary  0  -1
    划分所有空间到一个分区
    (parted)  print
    打印当前分区
    (parted)  quit
    可能还会用到的一些命令
    (parted) mklable msdos
    如果要反过来.将GPT磁盘转化为MBR磁盘
    
    在这样分完分区后,还要使用mkfs.ext3来进行格式化
    #partprobe
    #mkfs.ext3 -F /dev/sdb1
    
    由于fdisk是不支持GPT磁盘,所以使用fdisk -l来查看磁盘刚才的分区是没有用的.
    命令行的模式:
    将硬盘转化为GPT磁盘后,执行下列命令
    parted /dev/sdx mkpart primary 0 100 ##划分一个起始位置为0大小为100M的主分区
    sed:
    sed '2,5d'  将第 2~5 行删除
    sed '2d'  只要删除第 2 行
    sed '3,$d'  要删除第 3 到最后一行
    sed '2a drink tea' 在第二行后(亦即是加在第三行)加上『drink tea?』字
    sed '2i drink tea' 在第二行前
    sed -n '5,7p' 第 5-7 行
    sed -n '/root/p'  使用-n的时候将只打印包含模板的行。
    sed  '/root/d'   删除/etc/passwd所有包含root的行,其他行输出
    sed 's/要被取代的字串/新的字串/g'
    sed -i 's/.$/!/g' regular_express.txt  利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成!
    sed -i 's/(.){6}$//'  domain.txt   去掉每行后的6个字符
    sed 's/.{6}//' file    去掉每行的前6个字符
    grep:
    grep -v root /etc/passwd   将/etc/passwd,将没有出现 root 的行取出
    grep -n '^[a-z]' regular_express.txt 开头是小写字节
    grep -n '^the' regular_express.txt   让 the 只在行首列出
    grep -n '^[^a-zA-Z]' regular_express.txt 不想要开头是英文字母
    awk:
    awk  -F ':'  '{print $1"	"$7}'  账户和账户对应的shell,而账户与
    awk 'NR==3'  读取第三行
    awk '{print $NF}' 最后一列 
    shell之间以tab键分割
    awk '{print length($0)}'   取字符串长度
    diff + sort 快速比较文件差异
    diff <(sort file1) <(sort file2)
    vimdiff file1 file2  比较
    
    1、在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行
    root@Ubuntu$ ./tcpserv01 &
    2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ ./tcpserv01
    ^Z
    [1]+  Stopped                 ./tcpserv01
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ bg %1
    [1]+ ./tcpserv01 &
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$
    3、对于所有运行的程序,我们可以用jobs –l 指令查看
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ jobs -l
    [1]+  4524 Running                 ./tcpserv01 & 
    4、也可以用 fg %[number] 指令把一个程序掉到前台运行
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ fg %1
    ./tcpserv01
    5、也可以直接终止后台运行的程序,使用 kill 命令
    cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ kill %1
    yum安装错误
    rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了
    yum常用命令
      ● 1.列出所有可更新的软件清单命令:yum check-update
      ● 2.更新所有软件命令:yum update
      ● 3.仅安装指定的软件命令:yum install <package_name>
      ● 4.仅更新指定的软件命令:yum update <package_name>
      ● 5.列出所有可安裝的软件清单命令:yum list
      ● 6.删除软件包命令:yum remove <package_name>
      ● 7.查找软件包 命令:yum search <keyword>
      ● 8.清除缓存命令:
          ○ yum clean packages: 清除缓存目录下的软件包
          ○ yum clean headers: 清除缓存目录下的 headers
          ○ yum clean oldheaders: 清除缓存目录下旧的 headers
          ○ yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
    Linux 定时任务
    实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。
    名词解释:
       cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。
    软件包安装:
    要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:
    
    vixie-cron软件包是cron的主程序。
    crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
    查看是否安装了cron软件包: rpm -qa|grep vixie-cron
    查看是否安装了crontabs软件包:rpm -qa|grep crontabs
    如果没有安装,则执行如下命令安装软件包(软件包必须存在)
    rpm -ivh vixie-cron-4.1-54.FC5*
    rpm -ivh crontabs*
    如果本地没有安装包,在能够连网的情况下可以在线安装
    yum install vixie-cron
    yum install crontabs
    查看crond服务是否运行:
    pgrep crond
    或
    /sbin/service crond status
    或
    ps -elf|grep crond|grep -v "grep"
    crond服务操作命令:
    /sbin/service crond start //启动服务  
    /sbin/service crond stop //关闭服务  
    /sbin/service crond restart //重启服务  
    /sbin/service crond reload //重新载入配置
    /var/log/cron   日志文件路径
    
    ipmi重启服务器
    ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power off
    ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power status
    ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power on
    ipmitool -I lanplus -H 192.168.0.218 -U root -P CacheApp power reset
    ipmitool -I open sensor list
    
    ssh设置
    更改默认的SSH端口,先打开sshd_config文件
    vim /etc/ssh/sshd_config
    找到下面这行:
    #Port 22
    去掉#号设置端口号保存
    service sshd restart
    
    centos每天自动备份mysql数据库
    #!/bin/bash
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    export PATH
    #数据库用户名
    dbuser='root'
    #数据库用密码
    dbpasswd='********'
    需要备份的数据库,多个数据库用空格分开
    dbname='xiaohuai xiaohuai2'
    #备份时间
    backtime=`date +%Y%m%d%H%M%S`
    #日志备份路径
    logpath='/home/mysqlbak'
    #数据备份路径
    datapath='/home/mysqlbak'
    #日志记录头部
    echo ‘"备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/log.log
    #正式备份数据库
    for table in $dbname; do
    source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
    #备份成功以下操作
    if [ "$?" == 0 ];then
    cd $datapath
    #为节约硬盘空间,将数据库压缩
    tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
    #删除原始文件,只留压缩后文件
    rm -f ${datapath}/${backtime}.sql
    #删除七天前备份,也就是只保存7天内的备份
    find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} ; > /dev/null 2>&1
    
    echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
    else
    #备份失败则进行以下操作
    echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
    fi
    done
    如果这个sh文件是在win下编辑的,需要用Uedit转换为unix格式,否则sh会执行不成功,如图
    
    另外,一定要记得给这个sh文件执行权限
    1chmod +x /home/sh/mysqlbak.sh
    定时执行脚本:
    方式:
    1、
    执行 crontab -e
    输入以下内容:
    ______________________________________________________________________________
    00 00 * * * /bin/bash yourpath/mysqlbak.sh
    2、
    打开自动执行文件
    vi /etc/crontab
    在etc中加入如下内容,让其自动执行任务。
    00 00 * * * root /mysqlbak.sh
    以上两个 00 00 *** 为每天的凌晨自动执行脚本
    分 时 日 月 周 命令
    M: 分钟(0-59)。每分钟用*或者 */1表示
    H:小时(0-23)。(0表示0点)
    D:天(1-31)。
    m: 月(1-12)。
    d: 一星期内的天(0~6,0为星期天)。
    另外,测试的时候可以直接进入sh目录下执行
    # sh sh ./mysqlbak.sh
    等执行完了看看
    #日志备份路径
    logpath='/home/mysqlbak'
    这个目录下有没有备份文件,如果有,则表示sh执行成功,没有错误。
    
    Linux下模拟多线程的并发并发shell脚本
         分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量在定义数量的服务器上执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高非常多,在管理大批服务器时非常的实用。
         以下脚本功能是通过scp(也可选rsync)向上千台服务器传更新包,脚本运行后同时在后台有50个scp进程向服务器传包。
    #!/bin/bash
    ip=`cat iplist.txt|grep -v "#"|awk '{print $1}'`   #过滤服务器IP
    dir='/usr/local/src'  #目标路径
    
    thead_num=50 #自定义并发数,根据自身服务器性能或应用调整大小,开始千万别定义太大,避免管理机宕机
    tmp_fifo_file="/tmp/$$.fifo"  #以进程ID号命名管道文件
    mkfifo $tmp_fifo_file   #创建临时管道文件
    exec 4<>$tmp_fifo_file  #以读写方式打开tmp_fifo_file管道文件,文件描述符为4,也可以取3-9任意描述符
    rm -f $tmp_fifo_file    #删除临时管道文件,也可不删除
    
    服务器压力测试:
    ApacheBench用法详解:在Linux系统,一般安装好Apache后可以直接执行;
    # ab  -n  1000 -c 100 http://10.1.1.128/test.php 
    //n后面的代表总共发出1000个请求;-c后面的100表示采用100个并发(模拟100个人同时访问),后面的网址表示测试的目标URL。
    
    paste file1 file2 合并两个文件或两栏的内容 
    paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分 
    sort file1 file2 排序两个文件的内容 
    sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) 
    sort file1 file2 | uniq -u 删除交集,留下其他的行 
    sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) 
    comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 
    comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 
    comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 
    
    字符设置和文件格式转换 
    dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX 
    unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS 
    recode ..HTML < page.txt > page.html 将一个文本文件转换成html 
    recode -l | more 显示所有允许的转换格式 
    
    文件系统分析 
    badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块 
    fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性 
    fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 
    e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 
    fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性 
    fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 
    dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 
    
    初始化一个文件系统 
    mkfs /dev/hda1 在hda1分区创建一个文件系统 
    mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 
    mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统 
    mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统 
    fdformat -n /dev/fd0 格式化一个软盘 
    mkswap /dev/hda3 创建一个swap文件系统 
    mke2fs -t ext3 /dev/sda5 #把分区格式为ext3格式的
    mke2fs -t ext3 -b 2048 /dev/sda5 # 把分区的块改成2048字节,一般用于系统中小文件很多的情况
    mke2fs -t ext3 -m 3 /dev/sda5 #把分区预留的空间改为所占总空间的3%,默认为5%,因为当某个分区足够大的时候,可以减少空间
    mke2fs -t ext3 -L DATE /dev/sda5 #把分区的卷标设置为DATE
    
    SWAP文件系统 
    mkswap /dev/hda3 创建一个swap文件系统 
    swapon /dev/hda3 启用一个新的swap文件系统 
    swapon /dev/hda2 /dev/hdb3 启用两个swap分区 
    
    备份 
    dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份 
    dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份 
    restore -if /tmp/home0.bak 还原一个交互式备份 
    rsync -rogpav --delete /home /tmp 同步两边的目录 
    rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync 
    rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录 
    rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录 
    dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作 
    dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件 
    tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作 
    ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容 
    ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录 
    tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接 
    find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录 
    find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包 
    dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 
    dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 
    
    光盘 
    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容 
    mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件 
    dd if=/dev/cdrom of=/root/cd.iso
    mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件 
    mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件 
    cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件 
    gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件 
    mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件 
    cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中 
    cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3) 
    cdrecord --scanbus 扫描总线以识别scsi通道 
    dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD 
    

    查看最大进程数 sysctl kernel.pid_max

    查看当前进程数 ps -eLf | wc -l 

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/7844604.html
Copyright © 2011-2022 走看看