zoukankan      html  css  js  c++  java
  • linux-基础命令

    文件管理

    文件查看cat

    cat file
    显示行号:cat -n file
    显示原始文本:cat -v file

    更改文件权限chmod

    chmod
    chmod [-cfvR] mode file

    mode:
    [ugoa...][[+-=][rwxX]...][,...]

    u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
    + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
    r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
    

    将文件 file1.txt 设为所有人皆可读取 :chmod ugo+r file1.txt
    R-4
    W-2
    X-1
    RWX=4+2+1=7
    rwxrwxrwx=777
    修改文件权限:chmod 777 file

    [-cfvR]:

    -c : 若该文件权限确实已经更改,才显示其更改动作
    -f : 若该文件权限无法被更改也不要显示错误讯息
    -v : 显示权限变更的详细资料
    -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
    

    递归更改文件夹权限:chomd -R 777 /opt/farmsec

    改属主属组chown

    chown
    chown [-cfhvR] user[:group] file
    改文件属主属组 :chown runoob:runoobgroup file1.txt
    改文件夹属主属组chown -R runoob:runoobgroup /opt/farmsec

    对比文件diff

    diff
    diff file1 file2

    文件查看head/tail/more/less

    head
    tail
    more

    看前十行:head file -n10
    看后十行:tail file -n10
    组合看特定几行

    一页一页查看:more file
    space 下一页, b 键往回一页

    less
    [pagedown]向下翻动一页,[pageup]向上翻动一页

    实时监控日志

    tail -f log

    文件移动更名mv

    mv
    mv [options] source dest

    -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件
    -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示
    

    文件 aaa 更名为 bbb:mv aaa bbb
    将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs:mv info/ logs
    将/usr/student下的所有文件和目录移到当前目录下,命令行为:mv /usr/student/* .

    文件删除rm

    rm
    删文件:rm [options] file
    删目录及文件:rm -rf dir

    -i 删除前逐一询问确认。
    -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    -r 将目录及以下之档案亦逐一删除
    

    文件分割split

    按字节分割:split -b 1000 file
    按行数分割:split -l 10 file

    新建文件touch

    touch filename

    文件预设权限umask

    umask
    新建文件的权限为预设的权限
    预设的权限可通过,777-umask输出的数字得知
    也可直接umask -S得知预设权限

    文件查找which

    which file
    在环境变量$PATH设置的目录里查找

    文件复制cp

    cp
    cp [options] source dest
    复制整个目录:cp –r test/ newtest

    文件查找whereis

    whereis
    whereis 文件
    只能用于查找二进制文件、源代码文件和man手册页

    远程文件复制scp

    scp
    linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令,加密
    复制远程的整个目录到本地:scp user@ip:/home/root/ .
    本地复制到远程:scp local_file user@ip:remote_folder

    文档编辑

    排序sort

    sort
    将文本文件内容加以排序
    将文本文件的第一列以ASCII 码的次序排列:sort file
    逆序:sort -r file
    按数字大小排序:sort -n file

    去重uniq

    uniq
    检查及删除文本文件中重复出现的行列
    只删除相邻的重复,所以要与sort结合使用
    去重:cat 11.txt |sort |uniq
    去重并显示重复次数:cat 22.txt|sort |uniq -c

    统计wc

    wc
    wc file
    默认显示行数单词数字节数

    -c或--bytes或--chars 只显示Bytes数。
    -l或--lines 只显示行数。
    -w或--words 只显示字数。
    

    磁盘管理

    切换目录cd

    cd
    跳家目录:cd ~
    跳/usr/bin:cd /usr/bin
    ~家目录
    .当前目录
    ..上一层目录

    磁盘统计df

    df
    df -h

    大小统计du

    du
    du -h 目录或文件

    绝对路径pwd

    pwd

    列目录ls

    ls
    显示指定工作目录下之内容
    列表详细显示所有文件:ls -al [目录] 包括隐藏文件 .file

    网络通讯

    显示网络netstat

    netstat
    netstat -ano

    TCP:netstat -ant

    系统管理

    用户管理 useradd/mod/del

    1. 新增用户adduser/useradd
      useradd [-u uid] [-g gid] username
      创建root的别名用户:useradd -u 0 aaa
      查找系统中root的别名用户,并打印: cat /etc/passwd |grep "x:0" |grep -v "root:x"

    2. 修改用户usermod
      改变用户的uid:usermod -u 777 root
      改变用户的gid组:usermod -g 1002 bbb

    3. 删除用户userdel
      userdel [-r] [用户帐号]
      -r  删除用户登入目录以及目录中所有文件

    用户组管理 groupadd/mod/del

    1. 新增组groupadd
      groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
      相关文件:
      /etc/group 组账户信息。
      /etc/gshadow 安全组账户信息。
      /etc/login.defs Shadow密码套件配置。
      groupadd -g 344 runoob
      -r:创建系统工作组,系统工作组的组ID小于 500

    2. 修改组groupmod
      更改群组识别码或名称
      改gid:groupmod -g gid groupname
      组名linuxso改为linux:groupmod -n linux linuxso

    3. 删除组groupdel
      groupdel hnuser

    杀死进程kill

    kill
    kill pid
    彻底杀死进程:kill -9 pid
    列出选项:kill -l

    杀死指定用户所有进程:kill -u user

    登录信息last

    显示用户最近登录信息,读取位于/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统的用户名单全部显示出来。
    last

    查看进程ps

    ps
    显示所有包含其他使用者的进程:ps -aux

    查看进程top

    top
    实时显示 process 的动态

    root执行命令sudo

    sudo
    使用权限:在 /etc/sudoers 中有出现的使用者。

    切换用户su

    su
    su user

    在线用户信息who

    显示系统中有哪些使用者正在上面

    显示用户信息id

    id [user]

    在线用户w

    显示目前登入系统的用户信息
    w

    系统设置

    计划任务crontab

    列出任务:crontab -l
    编辑计划任务:crontab -e

    *    *    *    *    *    命令
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    +----- 星期几 (0 - 7) (星期天 为0)
    |    |    |    +---------- 月 (1 - 12)
    |    |    +--------------- 日 (1 - 31)
    |    +-------------------- 时 (0 - 23)
    +------------------------- 分 (0 - 59)
    1-6:1到6
    1,6:1或6
    */3:每隔3
    6-12/3:6到12中,每隔3
    所有命令需要写成绝对路径形式,如: /usr/local/bin/docker
    

    每一分钟执行一次 /bin/ls:* * * * * /bin/ls
    在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:0 6-12/3 * 12 * /usr/bin/backup
    每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha":20 0-23/2 * * * echo "haha"

    redhat管理套件rpm

    rpm
    安装软件:rpm -ivh x.rpm
    列出系统安装的所有软件包:rpm -qa

    dpkg软件管理

    dpkg -i x.deb

    修改密码passwd

    修改密码:passwd user
    显示密码信息:passwd -S user
    删除密码:passwd -d user

    shell四剑客

    文本提取awk

    awk
    行处理,默认空格作为分割符
    输出每行第4个字段:awk '{print$4}' log.txt
    指定分隔符,输出passswd中的用户名和uid:cat /etc/passwd |awk -F ':' '{print($1,$3)}' print中,表空格

    输出多个字段与字符拼接:cat /etc/passwd |awk -F ':' '{print$1"-"$3}'

    文本处理sed

    sed
    行处理,利用脚本来处理文本文件
    sed [<script>] [文本文件]

    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
    

    全文搜索替换:cat /etc/passwd | sed 's/root/jesus/g'

    s搜索
    /是定界符,如果有转义问题可换#等
    root是匹配的内容,jesus是替换的内容
    g表替换全文,不加则替换一次
    [危险]直接修改源文件:sed -i "s/my/your/" 123.txt
    每行开头加#:sed 's/^/#/g' pets.txt
    每行末尾加#:sed 's/$/#/g' pets.txt
    删除空白行:sed '/^$/d' pets.txt d表删除匹配行
    删除头部匹配:sed '/^video/d'
    删除尾部匹配的行:sed '/.cn$/d'

    文本匹配grep

    grep
    用于查找文件里符合条件的字符串
    匹配passwd中的root:grep 'root' /etc/passwd

    正则匹配:cat /etc/passwd |grep -E 'root|sshd'

    不匹配root:cat /etc/passwd |head -n5|grep -v 'root'

    递归查找整个目录:grep -r 'root' /etc/
    显示行号:grep -n 'root' /etc/passwd

    文件查找find

    find
    根目录下搜索文件passwd:find / -name passwd
    指定搜索文件和属主:find / -type f -user root -name passwd
    7天内修改过的,以文件名开头为test的文件: find / -type f -mtime -7 -name test*
    过去第7天修改的:find / -type f -mtime 7 -name test*
    7天前修改的:find / -type f -mtime +7 -name test*
    一分钟内修改过的:find . -type f -mmin -1

    大小-size
    mtime内容修改/atime读取访问/ctime属性修改
    mtime天/min分钟

    文件查找locate

    locate
    在数据库中搜索,数据库未更新则不准确
    locate passwd
    更新数据库:updatedb
    搜索 etc 目录下所有以 sh 开头的文件:locate /etc/sh

    组合使用分析日志

    统计日志中,访问量最大的10个IP:cat access_log|awk '{print$1}'|sort|uniq -c|sort -nr|head -n10

    命令传递/规范输出xargs

    xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
    xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
    xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
    xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
    

    多/单行输入每行3个输出:cat test | xargs -n3 echo
    多行输入单行输出:cat test.txt | xargs

    命令传递,杀掉已建立的ssh连接,但不kill掉sshd的服务:ps -aux |grep sshd| grep -v /usr/sbin/sshd |awk '{print($2)}' |xargs kill -9

  • 相关阅读:
    Atlas+Keepalived系列一:安装Atlas:
    MySQL查看当前的连接信息
    MySQL replicate-ignore-db详解
    MongoDB 进程控制系列二:结束进程
    MongoDB 进程控制系列一:查看当前正在执行的进程
    MySQL 大致测试更新时间
    MySQL SELECT 执行的具体步骤
    MongoDB副本集配置系列七:MongoDB oplog详解
    MySQL 分区
    微软BI 之SSIS 系列
  • 原文地址:https://www.cnblogs.com/Rain99-/p/13797609.html
Copyright © 2011-2022 走看看