美文网首页
linux命令总结

linux命令总结

作者: 三省吾身_9862 | 来源:发表于2022-03-22 17:31 被阅读0次

    安装VMware

    安装centos

    安装xshell + xftp,连接centos

    // centos 命令行输入,查看centos系统ip地址
    ifconfig
    
    // window系统命令行输入,ping下 centosip地址。看是否能通
    ping 192.168.0.5
    

    vi和vim编辑器

    1. 三种模式: 正常(一般)模式、插入(编辑)模式、命令模式;注意 ‘命令行下’ 和 ‘命令模式’,不是同一个意思


      image.png

      正常模式下

    yy 复制当前行,5yy复制当前行向下的5行  
    p 粘贴
    dd 删除当前行, 5dd 删除当前行向下的5行
    G 最后一行
    gg 第一行
    u 撤销上一步操作
    定位到具体20行 20 shift+g
    
    输入/ 查询的字符, n 查找下一个;再输入/,重新查找其他字符
    
    设置行号 :set nu
    取消行号:set nonu
    

    关机&重启

    image.png

    用户登录和注销

    su - 用户名    进入用户(在用户链末尾,增加一个用户)
    logout 退出登录(在用户链末尾,弹出一个用户)
    
    用户链

    用户管理

    1. 添加删除用户
    useradd milan // 增加milan用户,并且增加文件夹 /home/milan
    useradd -d /home/tst king 增加king用户,并且指定增加文件夹 /home/tst
    
    passwd 用户名 // 一定要加用户名,不加,是给当前使用系统的用户,设置密码
    userdel milan // 删除milan
    userdel -r milan // 删除milan,并且删除  /home/milan 目录
    
    id 用户名// 查看用户信息;例如:id root
    who am i // 查看当前登录linux用户信息,不是使用的用户信息
    
    1. 用户组
    groupadd wd // 添加组wd
    groupdel wd // 删除组wd
    // 如果添加用户,没有指定组,系统自动生成一个和用户名相同的组
    useradd -g wd zwj // 给新增加的用户,指定组
    usermod -g 用户组 用户名  // 给用户换组
    

    /etc/passwd 用户配置文件,记录用户的信息
    /etc/shadow 口令的配置文件
    /etc/group 组的配置文件,记录组的信息


    image.png

    运行级别

    // 设置当前运行级别
    init 0 // 关闭
    init 6 // 重启
    init 3 // 非图形界面 
    init 5 // 图形界面
    
    // 显示当前 运行级别
    systemctl get-default
    // 设置默认(linux系统开机后)运行级别,用户切换 图形界面 还是 非图形界面 
    systemctl set-default multi-user.target // 设置成linux系统开机后,采用 非图形界面 
    systemctl set-default graphical.target // 设置成linux系统开机后, 图形界面 
    

    找回root密码 26课

    文件目录指令

    // 选项
    -f 强制 (force)
    -r 递归 (recursion)
    
    pwd // 当前目录的绝对路径
    cd // 直接cd  回到家目录
    mkdir 目录 // 创建目录  mkdir -p /home/dog/tirger/cat  加上选项-p可以创建多级目录
    rmdir 目录 // 删除空目录;如果有内容需要递归删除,rm -rf 目录
    touch 文件 // 创建空文件
    cp 文件或目录  目的目录 // 拷贝文件或目录;递归拷贝目录下面所有内容 : cp -r 文件或目录  目的目录;强制拷贝覆盖,不提示:\cp  -r 文件或目录  目的目录
    rm 文件或目录 // 删除文件或目录 ; 强制递归删除 rm -rf 文件或目录
    mv 文件或目录  目的文件或目录 // 移动、重命名 :文件或目录;前后名字不同,会重命名
    cat 文件 // 查看文件 ;  cat -n 文件 : 查看文件带行号
    more 详细见下图
    less  详细见下图
    
    image.png
    image.png
    echo 变量或内容 // 输出内容到控制台;echo $PATH ;echo "hello world"
    
    tail 文件 // 默认显示文件末尾10行
    tail -n 5 文件 // 显示文件末尾5行
    tail -f 文件 // 监控文件变化(退出监控:ctrl+c)
    
    head 文件 // 默认显示文件头部10行
    head -n 5 文件 // 显示文件头部5行
    
    image.png
    ln -s /root /home/myroot // 给/root创建快捷方式 ,到在/home/myroo
    rm -f /home/myroot // 删除快捷方式,和删除文件一样,不是删除文件夹
    
    history // 查看 历史执行命令列表,显示所有执行的命令
    history 10 // 显示最近10个
    !5 // 执行 历史列表 编号为5的那条命令
    

    时间日期

    date // 显示当前时间
    date "+%Y-%m-%d %H:%M:%S" // 显示 年月日时分秒  ; data "+%Y" 这样就是显示年
    date -s "2021-11-03 09:00:05" // 设置日期时间
    
    cal // 显示日历(不加选项,显示本月日历)
    cal 2020 // 显示 哪一年的日历
    

    搜索查找

    find [哪个文件夹下查询] [选项]
    选项:
    -name 文件名
    -user 用户
    -size 文件大小 (+n大于,-n小于,n等于;单位K M G )
    find /home -name *.js
    find /home -user houchen | more
    find /home -size -1M
    
    ll -h // -h选项,是让列表信息,更让人看的懂
    
    updatedb
    locate hello.js
    
    which 指令 // 可以查看指定在哪个目录下
    
    grep "var" hello.js // 显示 在hello.js 中 含有var 内容的行
    grep -n "var" hello.js // 带行号显示出来
    grep -i "var" hello.js  // 查询内容不区分大小写
    

    压缩和解压

    // gzip 和 gunzip
    gzip Hello.js 
    gunzip Hello.js.gz 
    
    // zip 和 unzip
    zip He Hello.js // 把Hello.js压缩成He.zip
    zip -r myHome.zip /home // 选项 -r 递归压缩,既压缩文件夹
    unzip Hello.zip
    unzip -d /opt/tmp myHome.zip // 选项 -d ,指定解压到哪个文件夹下
    
    // tar
    //压缩多个文件
    tar -zcvf hw.tar.gz /home/hello.js /home/world.js
    //压缩文件夹
    tar -zcvf home.tar.gz /home
    // 解压到当前目录
    tar -zxvf hw.tar.gz
    // 解压到指定目录
    tar -zxvf home.tar.gz -C /opt/tmp
    

    文件权限

    1. 一个文件有三个层级的权限:所有人、所有组、其他组
    2. 权限分3种:r 读取权限、w写入权限、x执行权限


      image.png
    chown 用户名 文件名 // 修改文件所有者
    chown 用户名:组名 文件名 // 修改文件所有者和所在组
    chown -R 用户名:组名 文件名 // 修改文件所有者和所在组;如果是文件夹,递归执行
    chgrp 组名 文件名  // 修改文件所在组
    chgrp -R 组名 文件名  // 修改文件所在组;如果是文件夹,递归执行
    usermod -g 新组名 要改组的用户名  // 给用户换组
    usermod -d 新的家目录名 要改家目录的用户名 // 修改用户登录后,进入的初始目录
    
    image.png
    image.png
    chmod u=rwx,g=rw,o=x hello.js
    

    crontab 定时任务调度【相当于setInterval】(crontab 这个程序,在centos开机的时候,就默认开启不断监听有哪些要执行的任务)

    crontab -e // 进入 vi编辑模式
    */1 * * * * ll /etc/ > /root/to.txt
    
    crontab -r // 删除所有任务
    crontab -l // 列出所有任务
    
    service crond restart // 重启 任务调度 程序
    
    crond语法
    crond时间规则

    at定时任务【相当于setTimeout】

    ps -ef | grep atd // 查看 /usr/sbin/atd -f 有没有执行,只有它执行了,才能启动at定时任务
    
    at [选项] [时间]
    ctrl + D 结束at命令的输入, 输入两次 ctrl + D
    
    atq 查询系统中的任务列表
    atrm 编号 // 删除at任务
    
    // 1. 两天后下午5点,执行 ls /home 命令
    at 5pm + 2 days
    at> ls /home  
    // 2. 两分钟后,执行 date > /root/mydate
    at now + 2 minutes
    at>  date > /root/mydate
    
    atd任务
    at 时间

    磁盘

    增加磁盘分5步:
    1. 虚拟机添加磁盘
      在Vmware上左侧,我的计算机 - 找到要添加磁盘的系统 - 右键系统 - 设置 - 左下角添加按钮 - 选择磁盘 - scsi - 创建新的虚拟磁盘 - 将虚拟磁盘拆分成多个文件 - 完成 - 确认。重启系统
    lsblk 或者 lsblk -f  // 查看磁盘信息
    
    新增磁盘
    1. 分区
    fdisk /dev/sdb  // 磁盘分区命令;所有的设备都在dev目录下,新增的磁盘叫sdb
    m
    n
    p
    1
    回车
    回车
    m
    w
    // 查看磁盘信息,磁盘有一个分区了,但是没有格式化信息
    lsblk -f
    
    添加分区
    1. 格式化
    mkfs -t ext4 /dev/sdb1  // 磁盘格式化命令
    // 查看磁盘信息,有格式化信息了
    lsblk -f
    
    分区格式化
    1. 挂载
    // 1. 先创建一个目录
    cd /
    mkdir newdisk
    // 2. 挂载命令
    mount /dev/sdb1 /newdisk/
    
    有挂载目录了
    1. 卸载
    umount /dev/sdb1  或者  umount /newdisk // 卸载命令,分区 或者 挂载的目录
    
    1. 永久挂载;新增磁盘和分区、格式化,重启后都在,但是挂载重启后,就不在了,需要使用永久挂载
    vim /etc/fstab
    mount -a // 立即生效
    reboot  // 重启不会失效
    
    永久挂载
    查看磁盘情况
    // 查看磁盘情况
    df -h
    // 查看目录的磁盘占用情况
    du -ha
    // 递归查看opt目录里的文件个数(R:递归)
    ls -lR /opt | grep "^-" |  wc -l
    
    image.png

    网络配置

    虚拟机网络配置设置

    在Vmware最上面(菜单栏)- 编辑 - 虚拟网络编辑器 - NAT设置
    在window上,也可以改虚拟机的网络配置,因为虚拟机就是在window系统上,创建了一个虚拟网卡,实际配置,还是建立在window系统上。

    centos系统网络设置
    1. 图形界面设置:进入centos最上面(菜单栏) - 应用程序 - 系统工具 - 设置 - 网络


      image.png
    2. 命令设置
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    // 需要修改的代码
    BOOTPROTO="static"
    // 需要追加的代码
    IPADDR=192.168.200.130
    GATEWAY=192.168.200.2
    DNS1=192.168.299.2
    
    image.png

    虚拟机网卡配置,网段也要设置成200


    image.png

    NAT网关设置也要配置成200


    image.png
    最后重启 网络服务 或者 重启系统(reboot)
    // 重启 网络服务
    service network restart 
    

    设置主机名和hosts映射

    hostname // 查看主机名
    vim /etc/hostname // 修改这个文件,可以修改主机名;修改后,要重启系统
    
    // 设置hosts映射
    vim /etc/hosts // Linux 修改这个文件,可以修改hosts映射
    

    DNS

    Domain Name System 域名系统:是互联网上作为域名和IP地址相互映射的一个分布式数据库

    ipconfig/displaydns // 显示DNS域名解析缓存
    ipconfig/flushdns // 手动清理dns缓存
    

    浏览器访问一个域名,域名 解析过程:

    1. 先去浏览器 域名缓存找;没有找到,
    2. 再到 操作系统 dns域名缓存找;还没找到
    3. 再到 hosts文件里找;还没找到;
    4. 再到 电脑网络配置,设置的dns对应的ip地址上去找;见下图


      电脑网络配置,设置的dns对应的ip

    进程管理

    每个进程都会分配一个id号,称为进程号:pid
    一个程序运行起来了,就是启动一个进程。可分为前台和后台,前台就是用户可以在屏幕上操作的。后台程序,在执行,但是用户无法操作;系统服务一般都是后台程序


    image.png
      1. 查看进程
    // 查看所有正在执行的进程
    ps -aux 
    // 查询一个正在执行的进程
    ps -aux | grep sshd
    // 查询一个进程的父进程(PPID)
    ps -ef | grep sshd
    
    image.png
    进程图
    // 查看进程树
    pstree [选项]
    选项:
    -p 显示进程的PID
    -u 显示进程的所属用户
    
      1. 终止进程 / 杀进程
    kill [选项] 进程号
    killall 进程名
    
    // 踢掉tom登录用户
    ps -aux | grep sshd  // 查询登录的所有用户进程id; sshd是远程登录服务;如果直接:kill sshd的进程id,远程就登录不上了
    kill  tom的那个登录进程id
    // 重启sshd服务
    /bin/systemctl start sshd.service
    
    终止进程

    服务(service)管理

    服务: 本质就是 后台运行的进程,也叫 守护进程,也叫 服务

    service 服务名 [start | stop | restart | reload | status]
    service network status // 查看网络服务的状态
    ll /etc/init.d  // 查看centos7后,能使用service管理的服务
    
    image.png
    setup // 查看系统所有服务 
    

    按键盘上下箭头选择行,按空格切换是否自动启动 ;按Tab键,切换操作按钮;回车确认


    image.png
    systemctl 指令
    systemctl [start | stop | restart | status] [服务名] // 设置服务状态,系统重启后失效
    systemctl stop firewalld // 关闭防火墙服务
    
    ll /usr/lib/systemd/system // 查看 systemctl 管理的所有服务,以及对应的状态
    systemctl list-unit-files | grep [服务名] // 查看 systemctl 管理的服务 开机启动状态
    
    systemctl [enable | disabled] [服务名] // 设置 systemctl 管理的服务 , 在3,5两个运行级别的,开机启动状态,系统重启后还是有效
    
    systemctl

    防火墙

    window系统访问linux系统,为例:

    1. window系统上有两个程序 mysql客户端、xshell6;去连接 linux
    2. 到linux防火墙,防火墙开启;如果防火墙设置开启22端口,就能连接到sshd服务;但是没有开启3306,不能连接到 mysql服务
    3. 如果linux防火墙关闭,所有端口都能访问了。


      防火墙
    测试上面的防火墙例子

    linux上,开启防火墙,并查看运行的服务和端口

    systemctl start firewalld  // 开启防火墙
    netstat -anp | more // 查看运行的服务和端口
    
    image.png

    上图有个111的端口,我们用 window系统命令行, telnet去连接,连接失败


    image.png

    linux上,关闭防火墙,window系统命令行, telnet去连接,连接成功

    systemctl stop firewalld
    
    防火墙打开或关闭指定端口

    真正生产环境,防火墙是打开的,这时候就需要打开一些指定的端口,让外部可以请求通信

    firewall-cmd --permanent --add-port=111/tcp // 给防火墙 开放端口 列表里 ,增加111端口
    firewall-cmd --permanent --remove-port=111/tcp // 给防火墙 开放端口 列表里 ,移除111端口
    firewall-cmd --reload  // 重启防火墙,才能生效
    firewall-cmd --query-port=111/tcp  // 查询端口是否在防火墙 开放列表里
    firewall-cmd --list-all // 查看防火墙规则列表
    
    image.png

    还是上面那个例子,linux上

    systemctl start firewalld // 开启防火墙
    firewall-cmd --permanent --add-port=111/tcp // 开启111端口
    firewall-cmd --reload // 重启防火墙
    

    window系统上,用 telnent 去连接 :telnet 192.168.200.130 111;成功

    // 给防火墙 添加 指定ip和端口访问规则(192.168.200.130的机器,可以通过tcp协议访问这台机器的8080端口)
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
    // 移除指定ip和端口访问规则
    firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
    // 重启防火墙
    firewall-cmd --reload 
    

    动态监控进程

    top // 默认3秒刷新一次
    top -d 5  // 5秒刷新一次
    top -i // 不显示闲置和僵死进程
    top -p 1 // 指定监控pid为1的进程
    
    top2

    监控网络状态

    一个服务对应一个端口,有哪些服务开启(端口开启),哪些外部的服务(外部端口)连接成功;


    image.png
    netstat -an // 按一定顺序输出
    netstat -p // 显示进程号pid
    netstat -anp // 按一定顺序输出并显示进程号pid
    
    netstat -anp | grep sshd // 查看sshd服务的 网络信息(端口和连接情况等等)
    
    netstat -an 一个服务端口 连接 多个外部端口

    rpm包管理工具(相当于node的npm)

    rpm的安装包,是.rpm格式的

    rpm -qa | grep xx // 查询已安装的rpm列表
    rpm -qa | grep firefox // 查看是否安装了火狐浏览器
    rpm -q firefox // 查看是否安装了火狐浏览器
    
    rpm -qi [软件包名] // 查看已安装软件的信息
    rpm -ql [软件包名] // 查看软件安装的位置和安装后的文件夹含有哪些文件
    
    rpm -e [软件包名] // 卸载软件包
    rpm -e --nodeps [软件包名] // 强制卸载软件包
    
    // 查看一个文件,是哪个软件包安装后,生成的
    rpm -qf [文件名] // 例如: rpm -qf /etc/passwd
    
    // 安装软件包,要先下载好,放到一个文件夹里,这个安装包 是 .rpm格式的
    rpm -ivh [软件包位置] // 安装软件包  i=install v=verbose(提示) h=hash(进度条)
    rpm -ivh rpm -ivh /opt/firefox-68.10.0-1.el7.centos.x86_64.rpm // 先卸载 rpm -e firefox ;再安装firefox
    
    安装firefox

    先找到安装包,或者下载安装包;系统自带的安装包,在光盘Packages文件夹下。找到需要的包firefox


    image.png

    再到计算机 - /opt下,粘贴。* 注意: * 需要写入权限


    image.png

    yum

    yum是一个基于shell的软件包管理器,能从指定服务器自动下载rpm包并且安装,可以自动处理依赖关系,一次性安装所有依赖包。

    yum list | grep [软件包名] // 查看yum指定服务是否有需要安装的软件包
    yum install [软件包名] // 下载并安装软件包,并且下载安装相关依赖
    
    // 安装firefox
    yum list | grep firefox
    yum install firefox
    rpm -q firefox
    

    添加环境变量的两种方法

    • 追加系统查找变量路径
    vim /etc/profile // 编辑环境变量文件
    export PATH=$PATH:/root/node-v12.18.1-linux-x64/bin // 追加环境变量
    source /etc/profile  // 立即生效
    
    • 在原有系统可查找的变量路径下,创建外联
    ln -s /usr/local/node/bin/node /usr/local/bin/
    ln -s /usr/local/node/bin/npm /usr/local/bin/
    

    相关文章

      网友评论

          本文标题:linux命令总结

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