美文网首页
Linux 命令

Linux 命令

作者: 暴风鱼 | 来源:发表于2017-10-29 20:10 被阅读73次
    ######################################################################
    #                           Linux 命令                                #
    ######################################################################
    #日常命令
        #alias可添加到 ~/.bashrc 中
        $ alias t='cat /proc/acpi/ibm/thermal | grep --color=auto temperatures'
                #给显示温度起个别名并高亮显示‘temperatures’
        $ alias c='clear'
        $ alias mountiphone='rvictl -s <UDID>'   #挂载iPhone 可截数据包
        $ alias unmountiphone='rvictl -x <UDID>' #unmount iPhone
    
        $ cat /proc/acpi/ibm/thermal  #显示温度
        $ cat /proc/acpi/ibm/fan      #显示风扇转速
        $ cat /proc/cpuinfo           #能显示CPU频率
    
        $ cd;   # cd ~
    
        $ <ctrl>+<r>  #在命令历史中搜索
        $ history 
    
        $ date  #显示日期
        $ cal   #显示日历
        $ cal 2000  #2000年的日历
        $ cal 1 2000    #2000年1月的日历
        
        $ dmesg   #显示内核启动时带有时间的输出信息
    
        $ grep ^s /etc/passwd     #显示以s开头的行
        $ grep -c ^s /etc/passwd  #‘-c’ 显示符合条件的结果数
        $ grep -rn "abc" *  #在当前目录下所有文件中查找字符串
            # r 递归
            # n 显示行号
                    # * 当前目录下所有文件
    
        $ ls | grep ^s  #过滤出以s开头的行
        $ ls -d *ab #列出以'ab'为结尾的文件
                #-d 将目录当成文件列出,但不列出目录中的内容
        $ ls [dD]*  #以 d or D 开头的文件
        $ ls ????a* #第五个字母是a的文件
        $ ls *[tT][aA][bB]*   #名中含有‘tab’(不区分大小写)的文件
        $ ls *[0-9] #以数字结尾的文件
        $ ls *[!0-9]    #以非数字结尾的文件
    
        # 查看pid为626的进程打开的文件和socket(因为一切皆文件:))  
        $ ls -al  /proc/626/fd
    
    #包管理
        $ apt-get update  #更新‘软件列表’
        $ apt-get upgrade   #升级软件
        $ apt-get install XXX   #安装软件包XXX
        $ apt-get remove XXX    #移除软件包XXX
        $ apt show <包名>     #显示包的信息
        $ apt-cache search <包名> #搜索包
        $ apt-cache depends <包名>   #依赖于哪些
        $ apt-cache rdepends <包名>  #被哪些依赖
        $ apt-get source <包名> #下载源代码
        $ apt-get purge XXX   #移除软件包XXX及配置文件
        #所有的包描述信息在/var/lib/dpkg/status
        $ dpkg -x 1.deb d1   #将1.deb释放到目录d1下
        $ dpkg -L <包名>      #列出属于包的文件
    
    #文件操作
        $ cp  /x/x/f1 /y/y/f2    #将f1复制到f2
        $ scp /x/f1   host:/x    #secure copy (remote file copy program)
        $ scp b@192.168.1.1:/etc/nginx/nginx.conf ./       #复制远程文件到本地
        $ scp nginx.conf b@192.168.1.1:/home/b/nginx.conf  #复制本地文件到远程
    
        $ chown <属主>:<属组> file   #改变file的 属主 和 属组
    
        $ cut -d: -f1,6 /etc/passwd  #‘-d:’分界符为‘:’ ‘-f1,6’显示第1,6列
        $ head -n 3 /etc/passwd  #显示文件‘头部’3行 
        $ tail -n 3 /etc/passwd  #显示文件‘尾部’3行
    
        $ sort /etc/passwd  #以字母顺序 显示文件内容
    
        $ xxx | wc -l   #传给wc数行数
    
        $ xev  #print contents of X events
            #显示按了哪个键 以及键的信息
    
        $ dd if=/dev/zero of=EmptyFloppy.img bs=512 count=2880  #创建空白软盘(1.44MB)镜像
    
        $ df -h  # disk free 查看盘上还有多少空间可用 -h :以人类易读的方式
        $ du -hd1    # disk space usage  文件及目录的大小
                    #‘-h’ 以人类易读的方式
                    #‘-d1’ 一级子目录
        $ du -md1 | sort -n  #输出所有一级子目录的大小并排序  ‘m’以兆为单位
                            #‘-n’ --numeric-sort 根据字符串数值比
        $ du -sh  #显示当前文件夹大小 ‘s’ summarize
        $ dstat  #磁盘 IO 状态 信息
        $ dstat -D sda,sdb  #显示sda,sdb的IO状态信息 
        $ dstat -m  #显示内存使用情况 
    
        $ iotop  #进程级的 IO 状态信息
    
        $ diff  file1 file2  #显示文件间的不同
    
        $ fdisk  #创建分区
        $ fdisk -l  #列出磁盘信息 分区情况
    
        $ find .
        $ find . -name "*.rpm" -print  #在当前目录查找 文件名后缀为".rpm"的文件
        $ find /usr/ -user b  #/usr 目录下 所有属于b的文件
        $ find /home -mtime -1 -print > list 
                    #'-mtime -1' 最后修改日期为昨天的文件列表 写入list
        $ find / -type d >X 2>/dev/null &   #搜索/下的所有目录写入文件X 
                                            #错误信息定向到/dev/null  并在后台运行
        $ find . -name "*.pro*" | xargs grep "str"  #查找当前目录下文件名包含“.pro”的文件
                                                    #过滤出包含子串“str”的行
    
        #删除当前目录中下级目录里的 .git 文件夹
        $ find . -mindepth 2  -maxdepth 2 -name .git -exec rm -fr {} \;
                # 最小深度      最大深度       名字      对find到的结果执行的命令
        #删除当前目录下任意深度的所有.release 和 .cache 文件夹
        $ find . \( -name '.cache' -o -name '.release' \) -exec rm -fr {} \;
    
        $ locate  # find files by name 直接读取数据库(/var/lib/mlocate/mlocate.db) 速度快
        $ updatedb #更新mlocata.db信息
        $ locate /etc/sh  #搜索完整档案名中包含‘/etc/sh’的文件 例如:/etc/shadow  /home/b/etc/sh1 等
        $ locate -i /etc/sh #‘-i’忽略大小写
    
        $ whereis xxx #locate the binary, source, and manual page files for a command
        $ which xxx # locate a command 定位一个命令 
    
        $ find . | cpio -o > ../initrd.img   #将当前目录下的文件归档为上层目录下的 initrd.img 文件
        $ cpio -idu < X  #将X档中的释放出来
    
    
        $ ln file1 link1   #建立file1的硬链link1
        $ ln -s file1 link1 #建立file1的软链 link1
    
        $ file xx # determine file type 判断文件xx的类型
    
        $ gzip <file>  #将file压缩为file.gz
        $ zcat <file>  #查看压缩文件的内容
        $ gunzip <file.gz> #将file.gz解压文件file
        $ xz   #压缩或解压缩 .xz 格式的文件
        $ tar -czvf hi.tar.gz hi/       #将目录hi下的文档归档并压缩到 hi.tar.gz
                        # c(creat)z(.gz)v(verbose)f(filelist) 
                        #前三个参数顺序可变 f后要跟着文件名列表,so,f只能放在最后
        $ tar -tvf <文件名>  #t(list) 列出里面的内容
        $ tar -cvT list -f x.tar #T('文件列表'文件list) -f(输出文件)
                                #将文件列表中的文件归档为x.tar
    
        $ mkdir -p ~/x/x/x/x    #需要时自动创建上层目录
    
        $ rm -r ./*  #清空当前目录
    
        $ touch a  #建立空文件a OR 更新已有文件的最后修改时间为现在
    
        $ umask #set file mode creation mask
            #创建新文件时的掩码 比如值为:022 (000 010 010) rwx r-x r-x
            #即:除了所有者外,其他用户没有写权限
    #网络
        $ curl [URL] > [保存到本地的文件名]
        
        $ wget https://x.com/x.xz  #下载文件
    
        $ ifconfig  #显示IP等信息
        $ route -e  #显示网关信息
        $ dig #能显示出根域名解析服务器  <DNS>
        $ dig sohu.com +trace #显示域名解析过程
        $ dig @8.8.8.8 google.com  #从8.8.8.8 解析域名 google.com
    
        $ host sohu.com #查询ip和mail服务器
        $ host 8.8.4.4 #通过ip查主机名
                # DNS查询 4.4.8.8.in-addr.arpa 来解析其主机名
    
        # DNS查询类型:
        #      A   查询名字对应的ip地址
        #     PTR  查询ip地址对应的域名
        #    CNAME 规范名
        #    HINFO 主机信息
        #     MX   邮件交换记录
        #     NS   一个域的授权名字服务器
        $ host -t  a    www.163.com  # 通过指定类型进行查询
        $ host -t ptr   www.163.com
        $ host -t cname www.163.com
        $ host -t  mx   163.com
        $ host -t  ns   163.com
    
        $ traceroute -n -w 2 -q 2 -m 30 8.8.8.8  #跟踪到8.8.8.8的路由路径 <DNS>
                    #-n 打印节点的数字地址
                    #   -w 等待的秒数
                    #        -q 每次查询发两个查询请求
                    #             -m 最大跳数
    
        $ nmap -sn 192.168.1.1/24  #对192.168.1.0-255 进行ping
        # -sn: Ping Scan - disable port scan  只进行ping 不进行端口扫描
        # 24 : 24位掩码 即前3个字节不变 [x.x.x.0 ~ x.x.x.255]
            # 16: 16位掩码 即前2个字节不变 [x.x.0.0 ~ x.x.255.255]
            # 8 : 8位掩码 即前1个字节不变 [x.0.0.0 ~ x.255.255.255]
            # 0 : 0位掩码 即前0个字节不变 [0.0.0.0 ~ 255.255.255.255]
    
        $ telnet <IP> <PORT>  #尝试使用TCP连接某端口
    
        $ arp -al #显示arp转换表信息
            #a : The program displays or deletes all of the current ARP entries.
            #l : 链路层可到达情况
        $ netstat -at #显示端口信息 a:all t:tcp
        $ netstat -au # u:udp
        $ netstat -anut
        $ netstat -ant # n:端口号
        $ netstat -r # 显示路由表
        $ netstat -rn # 已数字地址的形式显示路由表
    
            # Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
            # default         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
            # 172.17.0.0      *               255.255.0.0     U         0 0          0 docker0
            # 192.168.1.0     *               255.255.255.0   U         0 0          0 eth0
    
            # Destination        Gateway            Flags        Refs      Use   Netif Expire
            # default            192.168.1.1        UGSc          160        0     en0
            # 127                127.0.0.1          UCS             1        0     lo0
            # 127.0.0.1          127.0.0.1          UH             17     7458     lo0
    
            # Flags <U> 该路由可以使用
            #        U   RTF_UP           Route usable
            #       <G> 该路由是一个网关。 没有此标志表示目的地是直接相连的。
            #        G   RTF_GATEWAY      Destination requires forwarding by intermediary
            #       <H> 该路由是到一个主机。 没有此标志表示带一个网络。
            #        H   RTF_HOST         Host entry (net otherwise)
            #       <D> 该路由由重定向报文创建
            #        D   RTF_DYNAMIC      Created dynamically (by redirect)
            #       <M> 被重定向报文修改
            #        M   RTF_MODIFIED     Modified dynamically (by redirect)
            #        m   RTF_MULTICAST    The route represents a multicast address
    
            # Refs   Reference Count 正在使用路由的活动进程数
    
            # Use    使用这条路由发送的数据包数量
        $ netstat -nia #可以看到ip为224.0.0.1的多播组
                # n 以数字形式显示IP
                # i 显示接口的统计结果
                # a 显示所有的借口
    
        $ fuser -n tcp <端口号>  #哪个进程在使用这个端口
        $ fuser -n udp <端口号>  # 再用 ps ax | grep [pid] 进行查看
        $ lsof -i :<端口号> # OSX 查看端口被哪个进程使用
    
        #打开某个端口监听 向某个端口写数据 (Linux OSX 的参数格式会不同)
        # 可指定 tcp | udp 以及发送的数据
        $ nc -l 1234  #监听1234端口
        $ nc 127.0.0.1 1234 < data #将当前目录下的data文件写向 
                #本机的1234端口
        $ nc -u 127.0.0.1 1234 < data
            #-u UDP   
        $ nc -zv 192.168.1.1 1-10  #扫描1.1的1-10端口
            #z 不发送任何数据只建立链接
            #v verbos
        $ echo -ne "GET / HTTP/1.0\r\n\r\n" | nc 192.168.1.1 8080 #GET8080端口上的内容
        $ iftop  #查看网络接口的流量 很好用:)
            #TX:发送流量
            #RX:接收流量
            #TOTAL:总流量
            #Cumm:运行iftop到目前时间的总流量
            #peak:流量峰值
            #rates:分别表示过去 2s 10s 40s 的平均流量
    
    
    #任务管理
        $ killall cat #杀死所有的cat  kill processes by name 
        $ jobs    #显示后台作业
        $ <命令>   &   #将命令放到后台执行
        $ fg [作业号]  #将作业调到前台
        $ bg [作业号]  #将作业调回后台
        $ ps aux | egrep "u1|u2"   #过滤出用户u1或u2的进程
        $ pstree #进程树
        $ top #'s':刷新间隔
            #'f':选择显示哪些字段,及按哪个字段排序
            #'P':按CPU占用率排序
            #'M':按内存占用排序
            #'T':按时间排序
            #'V':切换为树视图
        $ ps aux | egrep "u1|u2"   #过滤出用户u1或u2的进程
    
        $ service --status-all   # 所有service的运行状态
    
    #用户管理
        $ users  #显示当前已登录的用户
        # useradd is a low level utility for adding users. 
        # 用adduser 更方便些
        $ useradd -m user1 #创建用户use1,并建立home目录
        $ useradd -m user1 -p <加密后的密码(将直接写入/etc/shadow中)> #创建用户use1,并建立home目录         
        $ cat /etc/passwd #有所有用户的信息
        $ cat /etc/shadow
        $ cat /etc/group #所有组的信息
        $ groups #print the groups a user is in
                #显示当前用户所在组
        $ groups <用户名> #显示用户所在的组
        $ groupadd name #添加一个组
        $ adduser USER GROUP #将用户添加到组中
    
        $ usermod <用户名> -g GROUP   #强制使用 GROUP 为新主组
        $ usermod <用户名> -aG <组名> #将用户追加到组中
        $ usermod <用户名> -G <新的组名列表> #指定用户所在的所有组
        $ userdel -r <用户名> #删除用户及其主目录
                #-r, --remove 删除主目录和邮件池
        $ groupdel <组名>  #删除组
        $ chgrp <组名> <文件或目录>  #更改文件的所属组
        $ gpasswd
            #用法:gpasswd [选项] 组
            #选项:
            #  -a, --add USER                向组 GROUP 中添加用户 USER
            #  -d, --delete USER             从组 GROUP 中添加或删除用户
            #  -r, --remove-password         移除组 GROUP 的密码
            #  -R, --restrict                向其成员限制访问组 GROUP
            #  -M, --members USER,...        设置组 GROUP 的成员列表
            #  -A, --administrators ADMIN,...   设置组的管理员列表
        $ last | more   #显示登录信息
        $ last <用户名>  #用户的登录记录
        $ last tty1     #在tty1上的登录记录
        $ lastlog       #报告用户的登录情况
    
        $ w #显示who登录并在做什么
        $ who   #显示who登录了
        $ whoami  #我是谁
    
        $ mesg y  #接收消息
        $ mesg n  #不接受消息
        $ write u #给用户u写消息
        $ wall    #给所有用户写消息
    
        $ passwd    #改密码
    
    #其他
        $ bash -x domains.sh
            # -x 进入跟踪方式,显示所执行的每一条命令
    
        $ ldconfig      # scan the lin change again
    
        $ lsmod    #显示内核中模块的状态
        $ modprobe #增删模块Add and remove modules from the Linux Kernel
        $ depmod   #Generate modules.dep and map files. 里面有模块的相关性描述
        $ modinfo  XXX   #显示模块XXX的信息
    
        $ lshw      #列出系统中的硬件
        $ dmidecode #查看dmi信息 SMBIOS信息 硬件信息
                    #详见 man dmidecode
        
        $ python 回车 9999999**9999999 #我喜欢这样跑cpu到100%
    
        $ type <命令>  #显示<命令>是build-in,还是外部的
    
    #文档手册
        $ man   #快捷键 : vi风格的
                #</> 搜索
                #   <n> 搜索下一个
                #   <shift>+<n> 搜索上一个
    
        $ man ascii  #显示ascii表
        $ man -k xxx #等同于 apropos
        $ apropos xxx  #搜索手册页名称和描述
    
    #文件系统
        $ mkinitramfs -v  3.14.2bfy -o /boot/initrd.img-3.14.2bfy
                    #制作initrd.img :init ram disk
    
        $ mount #显示已挂载的分区
        $ mount -t ntfs /dev/sda1 ~/C #挂载ntfs类型的sda1分区
        $ mount -t iso9660  <iso文件> ~/iso #挂载iso类型的文件
        $ umount ~/C  #卸载挂载到~/C上的分区
    
        $ od /bin/ls  #以八进制形式显示文件内容
        $ strings /bin/ls  #列出文件中的字符串 例如:可执行文件中的字符串
        
        $ swapoff /dev/sdax #关闭swap 
        $ cat /proc/swaps   #查看swap在哪个分区
        $ swapon /dev/sdax  #启用swap
    
        $ sync  # flush file system buffers 
                # 将暂存在内存中的数据写回磁盘 
    
    #linux kernel
        $ patch -s -p1 < ../3.14.3-1.patch   #打补丁
        $ patch -sR -p1 < ../3.14.3-1.patch  #反向取消已打的补丁
                                            #s: silent until erro occur
    
        $ uname -a #print system information  -a:所有的
            #什么 内核名 内核版本 机器名 什么的都有
    
    #shasowsockets
        $ sslocal -s 10.2.2.1 -p 52361 -k 95602 -b 127.0.0.1 -l 1080 --fast-open  
            #shadowSocks 命令
                #optional arguments:
                #  -s SERVER_ADDR        server address
                #  -p SERVER_PORT        server port, default: 8388
                #  -b LOCAL_ADDR         local binding address, default: 127.0.0.1
                #  -l LOCAL_PORT         local port, default: 1080
                #  -k PASSWORD           password
                #  -m METHOD             encryption method, default: aes-256-cfb
                #  --fast-open           use TCP_FASTOPEN, requires Linux 3.7+
    
    #SSH
        $ ssh-add <fileName>    #adds private key identities to the authentication agent 
                                #添加SSH私钥
    
    #管理操作
        $ su <用户名>   #切换用户,但保留了当前的环境
        $ su - <用户名> #切换用户,并初始化用户环境
        $ sysctl kernel.sched_rr_timeslice_ms=100  #configure kernel parameters at runtime
                                                #配置内核参数
    
        $ reset #terminal initialization
    
        $ runlevel #显示上一个和当前的runlevel
        $ init N   #改变runlevel到N
        $ init 0   # 关机
        $ init 6   # 重起
    
        $ sudo update-rc.d shadowsocks-local remove
            # 将shadowsocks-local的脚本从所有rc.d 目录中移除
    

    相关文章

      网友评论

          本文标题:Linux 命令

          本文链接:https://www.haomeiwen.com/subject/yozepxtx.html