美文网首页
Linux基础及常用命令

Linux基础及常用命令

作者: E术家 | 来源:发表于2023-06-04 14:09 被阅读0次
    通过Linux服务器端自带的SSH(Secure Shell)服务(默认端口 号为\color{#FF270A}{22}),客户端以SSH协议实现远程连接、登录服务器
    [root@localhost ~]# 
    [root@localhost Documents]# 
    
    [snow@localhost ~]$ 
    

    @前:当前登录的用户账号
    @后:系统的主机名或ip地址
    ~:当前登录账号的属主目录
    Documents:当前的工作路径
    #:超级管理员
    $:普通账号

    常用命令

    [root@localhost ~]# date -s "2023-06-16 09:24:00"
    Fri Jun 16 09:24:00 CST 2023
    

    date -s "日期/时间":修改日期时间
    hwclock -w:将时间写入BIOS,以免重启服务器后,设置的时间丢失

    [root@localhost ~]# touch snow.txt
    

    touch:创建文件,如果文件已经存在,则更新文件的最后修改日期

    [root@localhost ~]# pwd
    /root
    
    [root@localhost Desktop]# pwd
    /root/Desktop
    

    pwd:查看看当前路径地址

    [root@localhost ~]# cd Desktop
    [root@localhost Desktop]# cd ..
    [root@localhost ~]# cd /
    [root@localhost /]# cd ~
    

    cd:跳转至某个地址
    cd ..:返回上一级目录
    /:根目录
    ~:当前登录账号的属主目录

    [root@localhost ~]# ls
    anaconda-ks.cfg  initial-setup-ks.cfg  Templates
    Desktop          Music                 Videos
    Documents        Pictures
    Downloads        Public
    [root@localhost ~]# dir
    anaconda-ks.cfg  initial-setup-ks.cfg  Templates
    Desktop          Music                 Videos
    Documents        Pictures
    Downloads        Public
    [root@localhost ~]# ls -l
    total 8
    -rw-r--r--. 1 root root    0 Jun  3 15:58 123
    drwxr-xr-x. 3 root root   15 Jun  3 15:58 2333
    drwxr-xr-x. 3 root root   18 Jun  3 16:13 66
    -rw-------. 1 root root 1894 Mar 28  2018 anaconda-ks.cfg
    drwxr-xr-x. 2 root root    6 Jun  3 15:54 Desktop
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Documents
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Downloads
    -rw-r--r--. 1 root root 1922 Mar 28  2018 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Music
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Pictures
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Public
    drwxr-xr-x. 3 root root   15 Jun  3 16:17 snow
    -rw-r--r--. 1 root root    0 Jun  3 15:57 snow.txt
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Templates
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Videos
    
    ls.png
    dir.png

    ls:查看目录下的文件,会显示不同类型的文件的颜色
    dir:查看目录下的文件,不会根据文件类型改变颜色
    -l:显示文件详细信息
    \color{#FF280A}{ll:等于 ls -l}
    -d:查看目录自身的信息,而不再是目录中的文件信息
    -a:显示所有文件和目录,包含隐藏文件和目录,包含.(当前目录)..(上级目录)
    -A:显示所有文件和目录,包含隐藏文件和目录
    -t:根据时间排序

    -rw-r--r--. 1 root root    0 Jun  3 15:57 snow.txt
    drwxr-xr-x. 2 root root    6 Mar 28  2018 Templates
    lrwxrwxrwx. 1 root root 7 Mar 28  2018 /bin -> usr/bin
    
    分段 含义
    “-”文件类型 - 普通文件 d 目录 c 字符设备 s 套接字 p 管道 b 快设备 l 连接
    rw-r--r-- 文件读写权限
    1 对文件:文件内容被系统记录的次数 对目录:目录中文件属性的字节数
    root 文件所有人
    root 文件所有组
    6 文件内容大小
    7 Mar 28 2018 文件最后一次修改的时间
    fileName 文件名
    rw- | r-- | r--
    

    r--:100 —— 4 (只读)
    -w-: 010 —— 2 (只写)
    --x:001 —— 1 (只可执行)

    rw- r-- r--
    u(所有者的权限) g(文件组员权限) o(其他人权限)
    [root@localhost ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.30.211.162  netmask 255.255.255.0  broadcast 172.30.211.255
            inet6 fe80::f590:fd0a:4fd4:59e5  prefixlen 64  scopeid 0x20<link>
            inet6 fe80::b766:af6a:1abe:c864  prefixlen 64  scopeid 0x20<link>
            inet6 fe80::5f45:55a0:d616:b21c  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:50:df:68  txqueuelen 1000  (Ethernet)
            RX packets 43867  bytes 8170649 (7.7 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 690  bytes 95246 (93.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 1721  bytes 192299 (187.7 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1721  bytes 192299 (187.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:12:20:76  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    ifconfig:获取ip地址

    [root@localhost ~]# ifconfig ens33 172.20.1.233
    

    只是暂时修改 IP地址,当服务器重启后,仍然会恢复原先的设定(读取配置文件的IP)

    [root@localhost ~]# ping 172.30.211.168
    

    ping:linux下的ping命令默认是持续长ping,用Ctrl+c可强行停止
    -c num:用于指定测试次数(linux下ping命令默认是长 ping,不设置该参数时,则是持续执行,直至用 Ctrl+C 强行停止)

    [root@localhost ~]# clear
    

    clear:清屏

    [root@localhost Desktop]# ls
    snow.txt
    [root@localhost Desktop]# rm snow.txt
    

    rm:删除文件,不能删除文件夹

    [root@localhost ~]#sudo rm -rf folder
    [root@localhost ~]#sudo rm -rf ?.*
    

    sudo:使用管理员权限
    -f:强制删除
    -r:用于目录删除,递归删除
    \color{#FF270A}{-rf:无需用户确认直接删除,可以删除文件夹,有危险}
    ?:通配符,标识1个字符
    *:通配符,标识0 ~ n个字符

    [root@localhost ~]# tree
    .
    ├── 123
    ├── 2333
    │   └── 1
    ├── anaconda-ks.cfg
    ├── Desktop
    ├── Documents
    ├── Downloads
    ├── initial-setup-ks.cfg
    ├── Music
    ├── Pictures
    ├── Public
    ├── snow.txt
    ├── Templates
    └── Videos
    
    10 directories, 4 files
    

    tree:树状展示文件夹下内容

    [root@localhost ~]# mkdir snow
    [root@localhost ~]# mkdir d1/d2/d3/d4 -p
    

    mkdir:创建文件夹
    -p:允许创建多级目录的标识

    [root@localhost ~]# rmdir snow
    [root@localhost dev1]# rmdir d1/d2/d3/d4 -p
    

    rmdir:删除文件夹,仅允许删除空目录
    -p:可以删除链路上的文件夹,仅允许删除空目录

    [root@localhost ~]# alias cdd1='cd /home/dev1'
    [root@localhost ~]# cdd1
    [root@localhost dev1]# 
    [root@localhost dev1]# unalias cdd1
    

    alias:设置别名,快捷指令
    unalias:取消别名,解绑

    [root@localhost dev1]# cp snow.txt d1/sn.txt
    [root@localhost dev1]# tree
    .
    ├── d1
    │   └── sn.txt
    ├── d2
    ├── d3
    ├── d4
    │   ├── d4.1
    │   ├── d4.2
    │   └── d4.3
    └── snow.txt
    
    7 directories, 2 files
    

    cp:拷贝文件
    cp 源文件(或文件夹,可以多个,空格隔开) 目标地址,目标地址可以是文件夹,也可以是文件名(等于复制+改名)
    复制文件夹需要加 -r
    -u:会判定源文件和目标文件的最后更新时间,源文件比目标文件新才会触发指令

    [root@localhost dev1]# mv snow.txt d2
    

    mv:移动,剪切,其他和复制功能一致
    移动文件夹时不需要 -r

    [root@localhost dev1]# vi a.txt
    

    vi:编辑文件,如果文件不存在,则会创建一个新文件
    键盘输入i键进入编辑模式-INSERT
    键盘输入R键进入编辑模式-REPLACE
    命令行模式:esc键开启/关闭
    :q 退出
    :w 保存
    :w 文件名 另存为
    :wq 保存并退出
    :q! 强制退出
    /word 光标后关键字查询 用n查询下一个
    ?word 光标前关键字查询 用n查询下一个,反向的
    :set nu 显示行号
    :set nonu 不显示行号

    [root@localhost ~]# cat snow.txt
    Hello World !
    

    cat:查看文件内容
    -n:显示行号
    -b:显示行号,但空行不标注行号

    [root@localhost ~]# more +5 -1 initial-setup-ks.cfg 
    cdrom 
    

    more:分页查看,不支持上翻
    -num:显示num行,需要加在文件名前
    +num:从第num行开始,需要加在文件名前
    回车 下翻一行
    空格 下翻一页
    q 退出
    Ctrl + Z 退出

    [root@localhost ~]# less -N initial-setup-ks.cfg
    

    less:分页查看,支持上翻
    -N:显示行号,需要添加在less后,加在文件后无效
    回车 下翻一行
    空格 下翻一页
    q 退出
    Ctrl + Z 退出

    [root@localhost ~]# head -3 initial-setup-ks.cfg
    [root@localhost ~]# tail -3 initial-setup-ks.cfg 
    

    head:显示头部行数内容,默认10行
    tail:显示尾部行数内容,默认10行
    -num:显示的行数
    -F:tail后可加,循环读取,只要被查看的文件有更新,会将文件最新的尾部记录,实时打印在屏幕上,按下 ctrl + Z 退出循环读取状态

    [root@localhost ~]# cat -n initial-setup-ks.cfg | head -15 | more -3
         1  cdrom
         2  # Use graphical install
         3  graphical
    

    显示文件initial-setup-ks.cfg内容并显示行号 | 从头部读取15行 | 分页显示,当前显示3行
    |:管道命令

    [root@localhost dev1]# find ./ -iname msg-20250301.log
    ./msg-20250301.log
    [root@localhost dev1]# find ./ -iname '*0301.log'
    ./msg-20250301.log
    

    find:查找文件或目录
    -iname:-i忽略大小写 -name指定文件名(可以用通配符进行模糊查找)

    [root@localhost ~]# grep -in network anaconda-ks.cfg 
    16:# Network information
    17:network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
    18:network  --hostname=localhost.localdomain
    56:@network-file-system-client
    57:@networkmanager-submodules
    

    grep:在文件中查找内容
    -in:-i忽略大小写 -n显示行号
    -v:反向查找,显示关键字不存在的行内容
    -A num:(After)匹配到搜索行 + 下面 num 行
    -B num:(Before)匹配到搜索行+上面 num 行
    -C num:(Center)匹配到搜索行 + 上下各 num 行

    [root@localhost ~]# tar -czvf myfile.tar.gz snow snow.txt 2333
    
    [root@localhost myfolder]# tar -xzvf myfile.tar.gz 
    

    tar:打包
    -czvf:打包并压缩文件,结果文件名常以 .gz结尾表示(若只打包,则结果文件常以 .tar结尾表示)。用 gzip方式压缩并打包
    -xzvf:解压解包文件
    -c:将文件打包
    -x:将文件解包
    -v:打包过程中,显示被打包的文件或目录清单
    -f:必须是最后一个选项,后面接要打包后的文件名
    -z:用gzip算法压缩,生成 .tar.gz 文件
    -j:用 bzip2算法压缩,生成 .tar.bz2 文件
    tar -czvf 打包名 被打包的文件
    tar -xzvf 被解压的文件
    -C:(解压到的)目标路径

    [root@localhost ~]$ zip snow mytar.tar
      adding: mytar.tar (deflated 97%)
    [root@localhost ~]$ unzip snow.zip 
    

    zip:压缩文件至zip归档文件中
    zip 压缩后的文件名 被压缩的文件
    unzip:解压缩

    [root@localhost root]# chmod u=rwx,g=rwx,o=rw- anaconda-ks.cfg 
    

    chmod:权限修改
    rwx:r读-4 w写-2 x执行-1
    用-标识无对应权限

    也即单一组属性如果是 rwx: 111 > 4+2+1 = 7;如果是 rw-: 110 > 4+2+0 = 6;如果是 ---: 000 >0+0+0 = 0
    chmod 777 ... 所有人 (u,g,o) 拥有所有权限 (rwx)
    chmod 760 ... 所有者(rwx),所属组(rw-),其他人(---)

    u:所有者
    g:所有者所在的群组
    o:其他用户
    a:所有用户

    [root@localhost ~]# type cd
    cd is a shell builtin
    [root@localhost ~]# man cd
    

    type:显示命令存放地
    man:显示命令详细信息
    内部命令:显示为 ... a shell builtin
    外部命令:显示该程序实际存放的地址 (/usr/bin...)

    [root@localhost ~]# su snow
    [snow@localhost root]$ exit
    exit
    [root@localhost ~]#
    

    su:切换用户
    exit:返回上一个用户账号

    [root@localhost home]# id dev1
    uid=888(dev1) gid=888(mygroup) groups=888(mygroup),889(mygroup2)
    

    id:显示用户信息
    id 用户名

    [root@localhost home]# useradd snow
    

    useradd:创建新用户

    [root@localhost home]# userdel -r snow
    

    userdel:删除已存在的用户
    -r:将该账号的主目录以及邮件文件一并删除(不加参数-r,则仅删除账户,所以一般都需要)

    [root@localhost ~]# shutdown -h 10
    [root@localhost ~]# shutdown -h 12:00
    

    shutdown:关机
    -h:时间,指定时间或延时关机 + n 分钟
    -c:未关机前,可以取消之前的shutdown设定
    -r:重启

    [root@localhost home]# poweroff 
    

    poweroff:关机

    [root@localhost home]# reboot
    

    reboot:重启

    [root@localhost ~]# vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     2  0      0 593580   2116 547120    0    0   453     9  189  330  2  2 95  0  0
    

    vmstat:查看整个系统的资源占用情况

    [root@localhost ~]# netstat
    

    netstat:显示网络状况
    -t:显示TCP协议相关信息
    -lnp:用于显示网络连接状况,还可以显示PID和程序名
    -an:用于显示网络连接状况
    -a:显示所有连线中的scoket
    -n:直接使用IP地址,而不通过域名服务器
    -l:显示监控中的服务器socket
    -p:显示正在使用socket的程序识别码和程序名称

    [root@localhost ~]# ps -aux | head -10
    

    ps:显示系统此刻运行中的进程信息
    -aux:列出目前所有的正在内存当中的程序(可查看cpu和内存的占用百分比)
    -a:所有进程
    -u:显示用户
    -x:列出所有tty进程,tty是当前所使用的虚拟终端
    -e:所有进程,与a略有区别
    -f:完整显示进程信息

    [root@localhost ~]# kill 233
    

    kill:停止或杀死进程
    kill PID:杀进程慢,但安全
    kill -9 PID:强制终止进程(更常用。速度快,可能导致程序异常)

    [root@localhost ~]# top
    top - 15:15:07 up 1 day, 20:03,  3 users,  load average: 0.02, 0.02, 0.05
    Tasks: 184 total,   1 running, 183 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
    KiB Mem :  1867024 total,    74088 free,   745004 used,  1047932 buff/cache
    KiB Swap:  2097148 total,  2097024 free,      124 used.   881872 avail Mem 
    

    top:动态实时监控进程所占系统的资源,3秒刷新一次
    load average:(1, 5, 15分钟内)系统平均负载
    Tasks:进程数情况
    Cpu:使用情况
    Mem:内存使用情况
    Swap:交换分区使用情况
    top -p 进程号1,进程号2,...:监控查看指定程序/命令的资源消耗情况

    [root@localhost ~]# free -mt
                  total        used        free      shared  buff/cache   available
    Mem:           1823         727          72          18        1023         861
    Swap:          2047           0        2047
    Total:         3871         727        2120
    

    free:查看整个系统内存使用情况
    -mt:用MByte为单位,并显示总计数值
    -b:以字节为单位
    -k:以KByte为单位
    -m:用MByte为单位
    -t:显示 total (总计)

    [root@localhost ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   17G  7.0G   11G  41% /
    devtmpfs                 897M     0  897M   0% /dev
    tmpfs                    912M     0  912M   0% /dev/shm
    tmpfs                    912M   18M  895M   2% /run
    tmpfs                    912M     0  912M   0% /sys/fs/cgroup
    /dev/sda1               1014M  179M  836M  18% /boot
    tmpfs                    183M  4.0K  183M   1% /run/user/42
    tmpfs                    183M   32K  183M   1% /run/user/0
    tmpfs                    183M     0  183M   0% /run/user/1000
    

    df:查看系统磁盘空间的占用情况
    -h:以易读(容量单位)的方式显示容量 (K, M, GB等)

    [root@localhost ~]# yum remove tree
    Loaded plugins: fastestmirror, langpacks
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be erased
    --> Finished Dependency Resolution
    base/7/x86_64                                                                   | 3.6 kB  00:00:00     
    extras/7/x86_64                                                                 | 2.9 kB  00:00:00     
    updates/7/x86_64                                                                | 2.9 kB  00:00:00     
    
    Dependencies Resolved
    
    =======================================================================================================
     Package              Arch                   Version                       Repository             Size
    =======================================================================================================
    Removing:
     tree                 x86_64                 1.6.0-10.el7                  @base                  87 k
    
    Transaction Summary
    =======================================================================================================
    Remove  1 Package
    
    Installed size: 87 k
    Is this ok [y/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Erasing    : tree-1.6.0-10.el7.x86_64                                                            1/1 
      Verifying  : tree-1.6.0-10.el7.x86_64                                                            1/1 
    
    Removed:
      tree.x86_64 0:1.6.0-10.el7                                                                           
    
    Complete!
    [root@localhost ~]# tree
    bash: tree: command not found...
    [root@localhost ~]# yum install tree -y
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.qlu.edu.cn
     * extras: mirrors.ustc.edu.cn
     * updates: mirrors.ustc.edu.cn
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================
     Package              Arch                   Version                        Repository            Size
    =======================================================================================================
    Installing:
     tree                 x86_64                 1.6.0-10.el7                   base                  46 k
    
    Transaction Summary
    =======================================================================================================
    Install  1 Package
    
    Total download size: 46 k
    Installed size: 87 k
    Downloading packages:
    tree-1.6.0-10.el7.x86_64.rpm                                                    |  46 kB  00:00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : tree-1.6.0-10.el7.x86_64                                                            1/1 
      Verifying  : tree-1.6.0-10.el7.x86_64                                                            1/1 
    
    Installed:
      tree.x86_64 0:1.6.0-10.el7                                                                           
    
    Complete!
    

    yum:(在线)联网安装
    -y:对所有问题都回答 “yes”,不弹出是否确认安装提示框
    常见的子命令
    rpm:离线安装
    -qa:查询当前主机所有已安装的rpm包
    -ivh:安装指定的rpm包
    -i:安装指定的 rpm包
    -v:显示安装细节
    -h:显示安装进度
    -a:查看所有 rpm包
    -q:使用询问的模式(遇上任何问题,rpm都会询问用户先)
    -e:卸载已安装的 rpm包

    [root@localhost ~]# systemctl 
    

    systemctl:列出正在运行中的服务及其状态
    systemctl start/stop/status/restart 服务名d —— 启动/停止/查看状态/重启 xxx服务

    [root@localhost ~]# systemctl start firewalld
    

    启动防火墙

    [root@localhost ~]# systemctl stop firewalld
    

    关闭防火墙

    [root@localhost ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2023-06-05 18:44:20 CST; 1 day 21h ago
         Docs: man:firewalld(1)
     Main PID: 738 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─738 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    
    Jun 05 18:44:19 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
    Jun 05 18:44:20 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'beyond-scope' is not sup...6.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: beyond-scope: INVALID_ICMPTYPE: No ...e.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'failed-policy' is not su...6.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: failed-policy: INVALID_ICMPTYPE: No...e.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: ICMP type 'reject-route' is not sup...6.
    Jun 05 18:44:20 localhost.localdomain firewalld[738]: WARNING: reject-route: INVALID_ICMPTYPE: No ...e.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    查看防火墙状态

    [root@localhost ~]# setenforce 0
    [root@localhost ~]# getenforce 
    

    setenforce:更改工作模式 需要在root下执行
    0:切换成 permissive(宽容模式),临时关闭内核防火墙,无需重启机器,重启后会重置
    1:切换成 enforcing(强制模式)
    getenforce:查看当前模式

    [root@localhost html]# wget  -O pic.jpg https://k.sinaimg.cn/n/news/transform/310/w710h400/20230605/6dff-f00adf586b8a396bfb3ef7ddcf815435.jpg/w160h90z1l50t1q70f19de.jpg
    

    wget http://www.xxxx.com/file:从网站下载文件到本地

    相关文章

      网友评论

          本文标题:Linux基础及常用命令

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