Linux 笔记本
博客内容如题,记录自己比较欠缺的 linux 基础知识。包括一些常用的 linux 系统指令,文件结构,系统权限等相关知识。
UNIX 哲学
- 每个程序只做一件事情,并把这件事做好
- 一个程序的输入可以作为另一个程序的输出,不输出无关内容
- 编写处理字符流的程序,因为那时通用接口
- 编写可以相互协作的程序
文件权限
权限
4:代表 r
权限
2:代表 w
权限
1:代表 x
权限
权限组合也可以用其他的八进制数字表示出来,如:
|
|
用户身份
u
:代表所有者(owner)
g
:代表所属组(group)
o
:代表其他人(others)
例如 740:
owner:7 可读可写可执行
group:4 可读
others:0 没有权限
常用指令栗子
|
|
配置 ssh 免密登入
免密登入步骤如下:
- 客户端通过 ssh-keygen 生成自己的公钥和私钥。
- 手动将客户端的公钥放入远程服务器的指定位置。
- 客户端向服务器发起 SSH 登录的请求。
- 服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
- 客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
- 服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。
首先需要在自己的客户端使用指令 ssh-keygen
生成一对ssh密钥,可以后面加 -t
参数指定加密算法,如 ssh-keygen -t dsa
,之后可以一路回车。
生成的秘钥对保存在 ~/.ssh
目录下。 id_rsa
是私钥, id_rsa.pub
为公钥。
之后再 .ssh
目录下 vim
一个 config
文件,里面配置服务器的别名 IP 等信息。
|
|
使用 ssh-copy-id aliECS
指令,自动将公钥上传到刚刚配置的服务器 aliECS
上。
用户管理指令
|
|
常用命令
- man 查看命令手册
- whereis 查询命令文件搜索位置
- file 查看文件类型
- who 查看当前在线的用户
- whoami 查看自己登入的账户
- pwd 查看当前所在路径
- clear 清屏
- history 查看命令历史(加 -c 清楚历史命令记录)
- reboot 重启
- uname -r 查看系统内核
- lsmod 显示载入的系统模块
- grep 查找字符串
- head/tail 显示文件的前十行和后十行(默认),添加参数
-f
会实时打印出文件的改动 - which 查看命令的路径位置
- mv 剪切+粘贴(重命名)
一些符号
- $ 环境变量和 win 的差不多
- ~ 表示家目录
- - 用于表示参数(一般简写用- 全单词用--)
. 和 ..
linux 文件目录下中如果使用 ls -a
命令时会发现所有文件都存在一个 . 文件和一个 .. 文件。
- . 表示当前文件目录
- .. 表示上一级文件目录
有 / 和无 /
- 文件目录下有 / 一般表示绝对路径,即根目录开始。
- 无 / 表示当前目录下开始。
管道 |
可以连接指令,将上一个指令的标准输出作为下个指令的标准输入。支持多个工作流,管道的命令如果没有依赖关系则会并行执行。
|
|
重定向符号 > 和 »
- 重定向:改变标准输入和标准输出设备。
- 输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;
- 输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。
>
: 会清空原有文件内容后输入
>>
: 在文件后追加输入
|
|
linux 文件目录结构
在 linux 系统中文件系统和 win 的差别非常大,你甚至可以用文件方式去查看一个进程。在启动一个进程时,Linux 会在 /proc 下创建一个以 PID 命名的文件夹,在该文件夹下会有我们的进程的信息。
- bin 可执行的命令脚本等
- boot 系统引导,一般装系统时需要单独分出一块给 boot
- dev 包含了所有linux中使用的外部设备,但是不包含外部设备的驱动信息
- etc 下面会放一些零零碎碎的配置文件
- home 普通用户的家目录
- lib 库文件
- mnt 一些存储设备挂载信息
- opt 用户程序目录
- proc 进程文件
- run 系统运行时的临时文件系统,存储系统启动以来的信息
- sbin 管理员可执行的二进制命令文件
- srv/sys 系统文件
- tmp 临时文件目录,文件重启后可能会清除
- var 经常被修改的目录放在这个目录下,包括各种日志文件重启不会清除
- usr 各个用户共用的一个应用安装目录
系统服务指令
系统进程
Systemd,后缀 d 表示守护进程(deamons)。守护进程可以理解为 win 下的后台服务,使用 pstree
命令可以看到后缀带有 d
的就是守护进程。linux 中的进程主要分为交互进程、批处理进程、守护进程三种。
- 交互进程:用户命令行上运行的进程
- 批处理进程:与命令行无关的进程,如系统备份
- 守护进程:后台动态服务 以下为守护进程指令
systemctl
|
|
日志 journalctl
|
|
软件黑名单 blacklist.conf
在安装英伟达的显卡驱动时会用到 blacklist ,需要把 Linux 自带的显卡驱动 Nouveau 禁用并加入到黑名单中。
|
|
modeset=0
这样系统启动时不会自动启动 Nouveau 驱动。
环境变量
系统级文件
/etc/profile: 在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中搜集 shell 的设置。这个文件一般就是调用 /etc/bash.bashrc 文件。
在这里面配置环境变量后,需要重启才能生效。
|
|
/etc/bash.bashrc:系统级的 bashrc 文件,为每一个运行 bash shell 的用户执行此文件 .bash shell 被打开时,该文件被读取。
用户级文件
~/.bashrc: 该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该该文件被读取。不推荐放到这儿,因为每开一个 shell,这个文件会读取一次,效率 上讲不好。
~/.bash_profile:每个用户都可使用该文件输入专用于自己 使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的 .bashrc 文件。 ~/.bash_profile 是交互式、login 方式进入 bash 运行的 ~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
|
|
开放端口
需要通过修改 ufw。
|
|
例子
|
|
其他小技巧
扫描局域网设备 ip
比如我想用手机的客户端链接本地的服务调试代码。
|
|
这个指令可以查看链接的局域网网卡。
- wlo1 : WiFi 无线网接口 NIC 可以查询 WiFi的 SSID
- enp4s0:以太网信息
|
|
查看端口占用
|
|
磁盘挂载
|
|
ps 命令技巧
ps 命令参数有 3 种不同的风格,Unix、BSD 和 GNU 风格。
由于 ps 参数非常之多,通常我们会使用 ps l (BSD 风格)或 ps -ef (Unix 风格)来查看所有进程。
GNU 风格支持多种长选项,通过混用 GNU 和 Unix 风格,可以清晰地显示需要的信息。
ps --user root
显示 root 用户的进程ps --forest
显示进程树ps --sort=-pcpu
按 CPU 使用率排序
混合使用: ps --user niku --forest -f