zoukankan      html  css  js  c++  java
  • Linux常用命令

    查看指定端口被哪个进程占用的情况

    lsof -i:端口号
    
    netstat -tunlp|grep 端口号

     文本替换

    sed -i 's/abc/ABC/g' ./*.log  //搜索替换
    sed -i 's/abc//g' ./*.log  //替换成空串
    sed  '/root/d' //搜索并删除行
    sed -n '/root/p'  //打印包含模板的行 -n带行号

    VI中替换

    s/vivian/sky/ 替换当前行第一个 vivian 为 sky
    s/vivian/sky/g 替换当前行所有 vivian 为 sky
    n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
    n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
    n 为数字,若 n 为 .,表示从当前行开始到最后一行
    %s/vivian/sky/(等同于:g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
    %s/vivian/sky/g(等同于:g/vivian/s//sky/g)替换每一行中所有 vivian 为 sky 

    删除Docker未使用的image

    # 先删除Docker已退出的容器container
    $ docker ps -a | grep Exit | awk '{print $1}'  | xargs docker rm
    # 删除images
    $ docker images -a | grep none | awk '{print $3}' | xargs docker rmi

    find命令

    find -type d -empty 查找空目录
    
    find ./ -atime +7 查找7天前访问过的文件 还有-mtime -ctime
    
    find ./ -atime +7 | xargs rm -f 删除7天前访问过的文件
    
    find -type d -empty  | xargs rm -fr 删除空目录
    
    find -user root 查找root用户的文件

     GIT操作

    签出远程分支到本地

     git checkout -b develop origin/develop 

     查看远程分支状态

    git remote show origin

    删除本地跟踪的已不存在的远程分支

    git remote prune origin

      找出两个commit之间修改的文件列表

      git diff b727664861d..ace377ae --name-only

      git打增量包

      git archive -o name.zip HEAD $( git diff b727664861d..ace377ae --name-only )

      git找出某个commit修改的文件列表

      git diff-tree -r --no-commit-id --name-only commit-id

    #查看修改
    git diff

    #取消对文件的修改。还原到最近的版本,废弃本地做的修改。 git checkout
    -- <filename> #取消已经暂存的文件。即,撤销先前"git add"的操作 git reset HEAD <file>... #修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。 git commit --amend #回退所有内容到上一个版本 git reset HEAD^ #回退a.py这个文件的版本到上一个版本 git reset HEAD^ a.py #向前回退到第3个版本 git reset --soft HEAD~3 #将本地的状态回退到和远程的一样
    git fetch origin
    develop
    git reset --hard origin/develop

    #回退到某个版本
    git reset 057d

    #回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
    git revert HEAD

     VI操作

    在全部内容的行首添加//号注释
    
    :% s/^////g
    
    在全部内容的行首添加#号注释
    
    :% s/^/#/g
    
    在2~50行首添加//号注释
    
    :2,50 s/^////g
    
    在2~50行首删除//号
    
    :2,50 s/^////g
    

    centos手工安装vboxsf并挂载virtualbox共享windows文件夹

    从VBoxLinuxAdditions.iso中提取出VBoxLinuxAdditions.run
    放到虚拟机中执行 sh ./VBoxLinuxAdditions.run

    查看有没有vboxsf模块
    lsmod | grep vboxsf
    如果没有结果返回,说明 vboxsf没有载入,执行
    modprobe vboxsf

    挂载共享文件夹
    mkdir /hostdata
    mount -t vboxsf winshare /hostdata

      

    查看系统版本 centos 7 需要先安装

    #yum install -y redhat-lsb
    #lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.1.1503 (Core) Release: 7.1.1503 Codename: Core

    查看Linux内核版本

    uname -a
    
    cat /etc/redhat-release,这种方法只适合Redhat系的Linux

    安装git 提示Require libcurl.so.3错误

    yum install git --disablerepo=rpmforge

    安装crond计划任务

    yum install  vixie-cron crontabs -y

    安装php posix系列函数

    yum -y install php-process

    安装 sz rz 上传下载工具

    yum install lrzsz

    释放内存

    sync && echo 1 > /proc/sys/vm/drop_caches # to free pagecache
    sync && echo 2 > /proc/sys/vm/drop_caches # to free dentries and inodes
    sync && echo 3 > /proc/sys/vm/drop_caches # to free pagecache, dentries and inodes

    安装 phpize

    yum install php-devel

    crontab计划任务

    crontab -e
    每10秒 *:10 * * * * cmd
    每1分钟 */1 * * * * cmd

    mysql赋权限

    grant all privileges on `dbname`.* to 'user'@'localhost' identified by 'password';
    FLUSH PRIVILEGES;

    mysql导入导出

    导出一个库
    mysqldump -uroot -p1234 dbname > file.sql
    导出一个表
    mysqldump -uroot -p1234 数据库名 表名 > /root/tb.sql

    导出一个数据库结构
    mysqldump -uroot -p1234 -d --add-drop-table 数据库名 > /root/struct.sql
    -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

     crontab自动备份mysql脚本

    # /bin/bash
    DB_NAME="***"
    DB_USER="***"
    DB_PASS="***"
    BIN_DIR="/usr/local/mysql/bin"
    BACK_DIR="/data/backup"
    DATE="$DB_NAME-`date +'%Y%m%d-%H:%M:%S'`"
    LogFile="$BACK_DIR"/dbbakup.log
    DeleteFile="$BACK_DIR"/deleted.txt
    BackNewFile=$DATE.sql

    
    

    $BIN_DIR/mysqldump --opt --force -u$DB_USER -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql

    echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile

    echo createFile:"$BackNewFile" >> $LogFile

    #删除7天前的备份文件

    find "$BACK_DIR" -ctime +7 -type f -name "*.sql" -print > $DeleteFile

    
    

    echo -e "delete files:" >> $LogFile

    
    

    #循环删除匹配到的文件
    cat $DeleteFile | while read LINE
    do
    rm -rf $LINE
    echo $LINE >> $LogFile
    done

    
    


    echo "---------------------------------------------------------------" >> $LogFile

     

    还原一个mysql库

    方法一
    mysql -u root -p dbname < file.sql
    密码 方法二 mysql
    -u root -p 密码 use dbname; source /root/file.sql

    mysql查看所有表状态

    show table status from dbname;

    查看单个表

    show create table db_name.table_name

    更改mysql表的存储引擎

    alter table table_name engine = innodb;

    MySQL还原root密码

    修改my.ini
    [mysqld]
    skip-grant-tables
    重启mysql服务
    
    cd到mysql安装目录的bin目录下
    $ mysql  (这里不再验证权限 直接登录)
    $ use mysql
    $ UPDATE user SET password=PASSWORD("new password") WHERE user='root';
    $ flush privileges;
    $ exit
    
    去掉my.ini的skip-grant-tables
    重启mysql服务
    完成

    硬盘空间 

    du -sh ./* | sort
    查看当前目录下的子文件夹空间占用情况
    -s 仅显示总计
    -h 以k、m、g为单位
    
    df -ah
    查看硬盘文件系统空间占用情况
    -a 显示所有文件系统
    -h 以k、m、g为单位

     CentOS注销其他登录

    w 列出在线登录的用户
    
    pkill注销其他用户的登录
    
    pkill -kill -t pts/1

    Shell不显示任何信息

    shell中可能经常能看到:** > /dev/null 2>&1
    
    命令的结果可以通过 > 的形式来定义输出
    
    /dev/null 代表空设备文件
    > 代表重定向到哪里,例如:echo "123" > /home/123.txt
    1 表示stdout标准输出,系统默认值是1,所以" > /dev/null"等同于" 1>/dev/null"
    2 表示stderr标准错误
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
    
    那么本文标题的语句:
    1 > /dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
    2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

    mysql复制数据

     insert into tttt(title,image,lang) select title,image,'fr' as lang from tttt where lang='en';
    MySQL导出指定数据到CSV (v5.6)
    
    /usr/local/mysql/bin/mysql -uroot -p -hlocalhost --port=3306 --default-character-set=utf8 dotdotbuy -e "select * from gp_goods_product where status = 1" > /tmp/mall_product.csv

    Mac OS安装PECL

    cd /usr/lib/php 
    sudo php install-pear-nozlib.phar
    
    Edit:
    
    /etc/php.ini and find the line: ; 
    include_path = ".:/php/includes" 
    修改为: 
    include_path = ".:/usr/lib/php/pear" 
    sudo pear channel-update pear.php.net 
    sudo pecl channel-update pecl.php.net 
    sudo pear upgrade-all

      

    php.ini配置redis存储session

    [PHP]
    extension=redis.so
    
    [Session]
    session.save_handler = redis
    ;默认存储在database 0
    session.save_path = "tcp://127.0.0.1:6379"
    ;指定存储到database 1
    session.save_path = "tcp://127.0.0.1:6379?database=1"
    ;存储到多个redis 分权重
    session.save_path = "tcp://host1:6379?weight=1&database=2, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"

    SCP文件传输

    将本机文件复制到远程服务器上
    
    scp /root/news.txt root@192.168.0.10:/var/www
    
    scp -P 2222 /root/news.txt root@192.168.0.10:/var/www
    
    对拷文件夹 (包括文件夹本身)
    
    scp -r   /home/www/tmp root@192.168.0.10:/home/www/scp
    
    指定SSH端口
    
    scp -r -P 2222  /home/www/tmp root@192.168.0.10:/home/www/scp

    crontab 用不同的账号执行命令:修改 /etc/crontab

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed

    * * * * * daemon echo 'hello'

      

     

  • 相关阅读:
    电脑不能连接到热点
    常用网络协议
    HVV面试
    【转载】hacker术语
    渗透测试学习路线
    系统安全——可信计算
    rsync文件同步详解
    rabbitmq集群部署高可用配置
    ansible自动化部署之路笔记
    ELK-elasticsearch-6.3.2部署
  • 原文地址:https://www.cnblogs.com/imbin/p/3148619.html
Copyright © 2011-2022 走看看