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 

  • 相关阅读:
    今日进度
    2020年9月29日Java学习日记
    2020年7月28日Java学习日记
    2020年10月13日Java学习日记
    2020年8月30日Java学习日记
    2020年10月10日Java学习日记
    2020年8月27日Java学习日记
    2020年10月6日Java学习日记
    2020年7月29日Java学习日记
    2020年10月3日Java学习日记
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/7844604.html
Copyright © 2011-2022 走看看