Bo2SS

Bo2SS

3 Linux基础知识

课程内容#

由图形化 [Windows] 转为字符界面 [Linux]#

错误与提示#

图形化→文本信息

  • 一定不要忽略屏幕输出,仔细看系统的每一个回复!
  • 程序 return 值反应在下一行右侧
    • 图片
    • return 0 表示成功

命令格式#

命令 [选项] [选项参数]... [参数]...

  • 选项:-- 选项全称 - 选项简称
  • 空格:不管多少个都是一个空格,作为分隔符

Linux 在安全方面考虑更多#

用户、用户组、权限

  • 修改密码:passwd
  • 退出用户:exit、logout、ctrl + d
  • 新建用户:useradd
  • 家目录:/home,其他用户在其他目录可能没有修改权限
  • [PS] 一切皆文件,一切设备、抽象的进程、运行数据、CPU...
    • 与用户相关的文件 /etc/passwd、/etc/group,相关命令 usermod、userdel、id
    • id:可查看自己或指定用户的 uid、gid (主要组)、groups (所在组)

用户和组#

  • 图片
  • 权限:字符表示 (r 可读、w 可写、x 可执行)→8/10 进制描述
  • 每个文件都有一个拥有者、一个拥有组、其余用户
  • 输入 ls -l 可查看
    • img
    • 见红框,文件类型 l、d 等,详见附加知识点 - 7 种文件类型

浏览文件#

Linux 只有一棵树,起于根目录 /

我是谁、我在哪、我要去哪#

  • 我是谁 whoami、who am i(看到本质)
    • 图片
    • whoami:系统感觉你是谁,who am i:你实际上是谁
  • 我在哪 pwd:print working directory
  • 我要去哪 cd:change directory
  • [PS] 书写命令或路径时,善用 Tab 键

软件的安装(Ubuntu)#

  • .deb:使用 dpkg -i xxx.deb
  • .tar:使用 tar 解压
  • apt 安装:可自动解决依赖关系、可选择合适的软件源地址
    • 安装到哪去了?分散放置的:bin、lib;/usr/→bin、include、lib、local、share (帮助手册)、src
    • 相关命令
      • 图片
      • search 可以找一个软件,查看是否存在、可能忘记名字了
      • apt remove xxx--purge (不保留配置文件)
      • apt autoremove 慎用,毕竟是 apt 管理的,可能误删还要用但没在运行、其他方式下载的软件

Linux 常用命令#

文件及目录操作#

  • 图片
  • ln:软连接、硬连接

文件内容的修改与查看#

  • 图片
  • ⭐Linux 三剑客:grep [Global Regular Expression Print]、awk [数据处理]、sed [批量操作]
  • ❗ 管道:| 把前一个命令的输出传给下个命令
  • less 比 more 更友好,功能更多
  • wc:word count,可接参数 - l [行数] 等等

文件的查找与定位#

  • 图片
  • which:查找可执行文件的具体位置,具体用的是哪个
  • locate
    • 基于索引,查找非常快
    • 【不是实时更新】,因为更新需遍历全部文件,慢
    • 会定期更新,或使用 sudo updatedb 立即更新数据库

用户相关#

  • 图片
  • sudo -i:使用超管权限登录默认 shell
  • chmod:change mode
  • chown:change owner

进程相关#

  • 图片
  • 常用 ps -ef,输出所有进程的详细信息
  • kill 指定 PID [process ID] 即可杀死进程
  • pkill 可以批量杀死字符匹配的进程,只杀死该用户有权限杀的,sudo pkill 慎用
  • crontab -e:编辑【定时任务】,参考里面格式即可
  • ctrl + z、fg、bg、jobs
    • jobs 查看进程序号
    • ctrl + z 会让进程暂停
    • bg 可以在后台跑,输出会显示在终端
    • %2(或 fg %2)[zsh 下]、fg 2 [bash 下] 将 2 号进程调至前台
    • [PS] fg 可用在修改源文件、gcc 的时候,提高效率

获取系统信息#

  • 图片
  • 可用于调优
  • 查看有没有被别人占用资源,检查系统是否被攻破:top、htop、nmon
  • 【如何降低云主机被攻破的几率】
    • 取消密码,配置 sshd,通过公私钥方式登录
    • 改复杂密码
    • 改默认的用户名或新建一个用户
    • 改 ssh 的连接端口
  • -h 说人话,友好显示
    • du -h,友好显示目录文件大小,K、M
    • free -h,友好显示内存数据
  • nmon:适合检查系统什么时候出了问题
  • ifconfig [interfaces config] 显示的网络设备信息含义- 博客
    • 能看到私网 ip,不能看到公网 ip
  • uname -a:打印所有可用的系统信息,还可以用 cat /etc/os-release

其他命令#

  • 图片
  • 在 ssh [已开源] 以前常用 telnet
  • 【scp 使用 ssh 拷贝】
    • 远程👉本地:scp username@ip_address: 远程文件 本地路径
    • 本地👉远程:scp 本地文件 username@ip_address: 远程路径
  • 云主机用了 poweroff 后,需连到控制台去开机

基础知识总结#

Terminal & Shell#

  • Terminal 类似设备
  • Terminal 里面运行着 Shell 软件,比如 bash、zsh,用来解释在 Terminal 中输入的命令
  • Shell 接收命令时:是否内置→在系统环境变量 PATH 中的路径里查找、调用

分隔符#

  • 一些特殊符号也属于分隔符:管道 | ,重定向 >、>>、<、<< ,后台运行 &,序列执行 &&
    • 重定向到 /dev/zero、/dev/null:输入到数据黑洞,输入到此处的东西直接被忽略,具体通过 man zero 查看【/dev:设备】

程序与进程#

  • 程序就是一个可执行的二进制文件;进程是程序在内存中的镜像、实例化

路径#

  • 绝对路径:起始点为根目录 /
  • 相对路径:善用当前路径 "." 和上一级路径 ".."
  • 远程路径:协议:// 用户名:密码 @位置 / 路径:端口
  • 特殊路径:~ 用户名 = 用户名的家目录,- = 上次工作目录

软件#

  • Linux 中没有注册表概念
  • 图片

隐藏文件#

  • 名字以。开头即可
  • 特殊目录:当前目录 "." 和父目录 ".."

文件类型#

【7 种文件类型】

  • 图片
  • link:可暂时理解为 windows 的快捷方式
  • block:系统大多数的 block 是 4096Byte = 4KB,起到缓冲的作用,类比快递配送
  • character:设备也是文件,如虚拟终端 /dev/pts/0
  • socket:基于网络的都离不开它
  • pipe:不占用内存,只负责传输,举例一次传输:echo > 管道文件,cat 管道文件
  • 3 种普通文件
  • 图片

文件权限的修改#

  • chmod
    • 善用 +、-、=
      • 图片
      • a = all、+ 增加权限、- 去除权限、= 直接覆写权限
    • 尽量减少 chmod 777 的使用,权限开放过多
  • chown
    • 可同时修改文件所属的用户和组
      • chown 所属用户:所属组 文件
    • 可修改目录及目录下所有文件的所属用户
      • chown -R 所属用户 目录
  • chgrp:修改文件所属的组,一般可用 chown 替代
  • 查看文件权限
    • ll = ls -lh
      • 可通过 which ll 或 alias ll 查看 ll 具体使用的命令
    • l = ls -lah
    • 系统中的三个时间:修改时间 mtime、读取时间 atime、权限修改时间 ctime

用户#

  • 慎用 root
  • su 用户名:切换到另一用户,需输入其密码
  • su - 用户名
    • 使用 "-",会完全更新环境变量,适合复杂操作
    • 不加 "-",会适当更新环境变量,适合临时切换用户
  • 不加用户名,则默认切换到 root

附加知识点#

  • . 当前目录 .. 父目录 / 根目录
  • 僵尸进程 [有害]:子进程死了,父进程没管,子进程还占着资源;孤儿进程 [无害]:会被 1 号进程领养
  • 与其它终端聊天
    • 输入 w 查看在线终端
      • 图片
      • TTY [Teletype]:终端;pts [pseudo terminal slave]:虚拟终端
    • 输入 echo "hello" >> /dev/pts/1 给终端 pts/1 发 "hello"
      • 图片
      • pts/1 可以收到消息,并以同样方式 echo 回信
    • 还可以使用 wall "System is rebooting in 15s" 告诉所有在线用户自己要重启了
  • sudo !! 可以以超级用户准备执行上次命令
    • 图片
    • 可以以超级用户准备执行上次命令,不需要再输一遍命令了
  • whereis
    • 图片
    • 查看软件的安装目录
  • file 文件
    • 图片
    • 查看文件的具体信息
  • 通常使用 [man 命令] 或 [命令 -h] 可以查看命令帮助
    • 使用说明的格式规则:[] 可选选项,| 不能同时使用的参数
  • 目录也是文件
  • alias 别名 = 命令,可设置别名对应的命令

Tips#


课程速记#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。