Oct1a

Linux学习笔记

Linux 内核

  • 内核(kennel)是系统的核心,是运行程序和管理磁盘和打印机等硬件设备的核心程序
  • 内核版本又分为稳定版和开发版,两种版本相互关联,相互循环

Linux 发行版

  • 发行版通常包含桌面环境、办公套件、媒体播放器、数据库等应用软件
  • 常见发行版有:
    • Ubuntu
    • Redhat
    • Cenos
    • Debian
    • Manjaro
    • Arch

Linux 目录结构

  • **/**:根目录,一般根目录只存放目录
  • /bin、/usr/bin:可执行二进制文件的目录,如常用的命令:lsmvcat
  • /boot:放置Linux启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuxz,系统引导管理器:/boot/grub
  • /dev:存放Linux系统下的外部设备文件
  • /etc:系统配置文件存放目录
  • /home:用户的主目录,目录名是以用户的账号命名的
  • /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要的函数库的协助,类似Windows里的DLL文件
  • /lost+fount:一般情况下是空的,当系统异常产生错误时,会将一些丢失片段放置在这(比如非法关机)
  • /mnt、/media:光盘默认挂载点,通常挂在与/mnt/cdrom下
  • /opt: 这是给主机额外安装软件所摆放的目录。
  • /proc:是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:系统管理员root的主目录

#常用Linux命令的基本使用

命令 作用
ls 查看当前文件夹下的内容
pwd 查看当前所在文件夹
cd [目录名] 切换文件夹
touch 如果文件不存在,新建文件
mkdir 创建目录
rm [文件名] ****删除指定的文件
clear 清屏
  • ctrl+shift + =放大终端窗口的字体
  • ctrl + -缩小终端窗口的字体

Linux 终端命令格式

command [-options] [parameter]
  • 选项说明
    • []:表示可选
    • command:命令名,相应功能的英文单词或缩写
    • [-options]:选项,可用来对命令进行控制,也可以省略
    • [parameter]:命令参数,可以是零个,一个或者多个

查阅命令帮助信息

因为查询的都是英文的,如果工作中遇到问题可以借助网络搜索来查询

命令 作用
command –help 显示command命令的帮助信息显示command命令的帮助信息
man command 查询command的命令使用手册
  • 使用man的操作键
b 回滚一屏
f 前滚一屏
操作键 功能
q 退出
空格键 显示手册的下一屏
Enter键 一次滚动手册页的一行

终端实用技巧

1> 自动补全

  • 在敲出文件/目录/命令的前几个字母之后,按下tab

2> 曾经使用过的命令

  • /光标键可以在曾经使用过的命令之间来回切换
  • 如果要推出选择,并不想执行当前选中的命令,可以按ctrl+c

文件和目录常用命令

  • 文件和目录的特点
    • Linux文件或者目录名称最长可以有256个字符
    • .开头的文件为隐藏文件,需要用加-a参数才能显示
    • ./代表当前目录
    • ../代表上一级目录

相对路径和绝对路径

  • 相对路径 表示相对当前目录所在的目录位置
  • 绝对路径 表示从根目录/home目录开始的具体位置

ls 常用选项

参数 含义
-a 显示指定目录下所有子目录和文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-l 以人性化的方式显示文件大小

mkdir

参数 含义
-p 可以递归创建目录

新建目录的名称不能与当前目录中已有的目录或文件同名

rm

参数 含义
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数

使用rm 命令需要小心,因为文件删除后不能恢复

tree

  • tree命令可以用树状图列出文件目录结构
参数 含义
-d 只显示目录

cp

  • cp命令是将文件目录复制到另一个文件目录
参数 含义
-f 已经存在的目标文件直接覆盖,不会提示
-i 覆盖文件前提示
-r 递归复制该目录下的所有子目录和文件,目录文件必须为一个目录名

mv

  • mv命令可以用来移动文件或目录,也可以给文件或目录重命名
参数 含义
-i 覆盖文件前提示

cat

  • cat命令可以用来查看文件内容创建文件文件合并追加文件内容等功能
  • cat会一次显示所有的内容,适合查看内容比较少的文本文件
参数 含义
-b 对非空输出行编号
-n 对输出的所有行编号

more

  • more命令可以用于分屏显示文件内容,每次只显示一页内容
  • 适合查看内容较多的文本文件
操作键 功能
b 回滚一屏
f 前滚一屏
q 退出
空格键 显示文本的下一屏
Enter键 一次滚动文本的一行

grep

  • grep允许对文本文件进行正则查找
参数 含义
-n 显示匹配行及行号
-v 显示不包含匹配文本的所有行
-i 忽略大小写
  • 常用的两种正则查找法
参数 含义
^a 行首,搜寻以a开头的行
a$ 行尾,搜寻以a结尾的行

echo 文字内容

  • echo 会在终端中显示参数指定的文字,通常是和重定向联合使用

重定向 > 和 >>

  • 将终端的内容输出/追加到指定文件中

其中

  • \>表示输出,会覆盖文件原有的内容
  • \>>表示追加,会将内容追加到已有文件的末尾
例:echo ls -lha >> a

管道 |

  • Linux 允许将 一个命令的输出可以通过管道 作为 另一个命令的输入
  • 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里的|的左右分为两端,左端-,右端-

常用的管道命令有:

  • more:分屏显示内容
  • grep:在命令执行结果的基础上查询指定的文本

用户权限相关命令

  • 用户管理包括用户管理
  • 可以指定每一个用户针对不同的文件和目录不同权限
权限 英文 缩写 数字代号
read r 4
write w 2
执行 excute x 1

chmod (重要)

  • chmod 可以修改用户/组文件/目录的权限
命令 作用
chmod +/-rwx 文件名|目录名 更改文件/目录的权限

超级用户

  • Linux系统中的root账户通常用于系统的维护和管理,对操作系统的所有资源具有访问权限
  • 不建议使用root账户直接登录系统

sudo

  • susubstitute use的缩写,表示使用另一个用户的身份
  • sudo命令是其他身份用来执行命令
  • 用户使用sudo时必须先输入密码,但有五分钟的有效期限,超时必须重新输入密码

组管理

提示:创建组/删除组的终端命令都需要通过sudo来执行

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
**chgrp -R **组名 文件/目录名 修改文件/目录的所属组
  • 组信息是保存在/etc/group

用户管理

创建用户/删除用户/修改其他用户密码 的终端命令都需要通过sudo执行

命令 作用 说明
useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户目录 -g 指定用户所在组
passwd 用户名 设置用户密码 如果是普通用户,直接用passwd修改自己的账户密码
userdel - r 用户名 删除用户 -r 选项会自动删除用户目录
cat /etc/passwd | grep 用户名 确认用户信息 用户信息会保存在/etc/passwd文件中
  • 如果创建用户时,如果忘记添加-m选项指定新用户的home目录—最简单就是删除用户,重新创建
  • 创建用户时,忘添加-g选项,默认会创建一个和用户名同名的组名

查看用户信息

命令 作用
id [用户名] 查看用户UID和GID信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

passwd文件

/etc/passwd 文件存放的是用户的信息,由6个分好组成的7个信息,分别是

  1. 用户名
  2. 密码(x,表示加密的密码)
  3. UID(用户标识)
  4. GID (组标识)
  5. 用户全名或本地账户
  6. 家目录
  7. 登录使用的终端命令(默认是dash)

usermod

  • usermod 可以用来设置用户的主组 / 附加组 和 登录shell
  • 主组:通常在新建用户时指定,在/etc/passwd的第四列GID对应的组
  • 附加组:在/etc/group 中最后一列表示该组的用户列表,用于指定用户的附加权限

设置了用户附加组后,需要重新登录才能生效

命令 作用
usermod -g 组 用户名 修改用户的主组
usermod -G 组 用户名 修改用户的附加组
usermod -s /bin/bash 用户名 修改用户登录的shell

注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo 附加组中

usermod -G sudo 用户名

which (重要)

  • which 命令可以查看执行命令的所在位置,例如:
whish ls

注意:cd这个终端命令是内置在系统内核中的,没有独立的文件,因此用which无法找到cd命令的位置

切换用户

命令 作用 说明
su - 用户名 切换用户,并且切换目录 - 可以切换到用户目录,否则保持位置不变
exit 退出当前登录用户
  • su 后不跟用户名,默认切换到root,但是不推荐使用,因为不安全

修改文件权限

命令 作用
chown 用户名 文件名|目录名 修改拥有者
chgrp -R 组名 文件名|目录名 修改组
chmod -R 755 文件名|目录名 修改权限
  • chmod在设置权限时,可以简单使用三个数字分别对应拥有者 / 其他用户的权限

  • 常用数字组合有
    • 777===>u= rwx,g=rwx,o=rwx
    • 755===>u=rwx,g=rx,o=rx
    • 644===>u=rw,g=r,o=r

远程管理常用命令

shutdown 关机 / 重启

  • shutdown命令可以安全关闭或者重新启动系统
命令 作用
shutdown [选项] [时间] 关机/重新启动
  • 选项说明

    选项 含义
    -r 重新启动
    -c 取消执行

不指定选项和参数,默认表示1分钟后关闭电脑

注意:远程维护服务器时,最好是重新启动系统,而不是关机

ifconfig 查看或配置网卡信息

命令 作用
ifconfig 查看/配置计算机当前的网卡配置信息
ping ip地址 检测到目标 ip地址的连通性

ping 一般用于检测当前计算机到目标计算机之间的网络是否畅通、数值越大、速度越慢

 #查看网卡对应的IP地址
 $ ifconfig | grep inet

ssh 远程登录和复制文件

  • SSH客户端是一种使用Secure Shell(SSH)连接到远程计算机的软件程序
  • SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
    • 利用SSH协议可以有效防止远程管理过程中的信息泄露
    • 通过SSH协议可以对所有传输的数据进行加密,也能防止DNS欺骗和IP欺骗
    • 使用SSH协议传输的数据是经过压缩的,所以可以加快传输速度
命令 作用
ssh 用户名@ip 关机 / 重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 远程复制文件
  • SSH这个终端命令只能在Linux和Unix系统下使用,在Windows上需要使用客户端软件才行
  • SSH服务器的端口号很可能不是22,那就使用-p选项,指定正确的端口号,否则无法连接服务器

Windows下SSH客户端的安装

xshell http://www.xshellcn.com/

putty https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

SCP

  • scp 就是secure copy ,是一个在Linux下用来进行远程拷贝文件的命令
  • 它的地址格式与ssh基本相同需要注意的是,在指定端口时用的是大写的-P而不是小写的
选项 含义
-r 复制该目录下的所有子目录和文件,目标文件必须是一个目录名
-P 若远程SSH 服务器的端口不是22

注意:‘:’后面的路径如果不是绝对路径,则以用户的home目录作为参照路径

例:把本地的文件上传到服务器
scp -P port test.txt user@remote:Desktop/test.txt
把远程服务器的文件下载到本地
scp -P port user@remote:Desktop/test.txt
加上 -r 选项可以传送文件夹到服务器
scp -r demo user@remote:Desktop
把服务器的文件夹下载到本地
scp -r user@remote:Desktop demo

  • scp这个终端命令只能在Linux或者Unix系统下使用
  • 如果在Windows系统中,可以安装FileZilla使用FTP进行文件传输

SSH 高级

有关SSH的配置信息都保存在用户home目录下的.ssh目录下

01. 免密码登录

  • 配置公钥
    • 执行ssh-keygen即可生成SSH钥匙,之后一路回车即可
  • 上传公钥到服务器
    • 执行ssh-copy-id -p port user@remote,可以让远程服务器保存我们的公钥

采用非对称加密算法

  • 使用公钥加密的数据,需要使用私钥解密
  • 使用私钥加密的数据,需要使用公钥解密

02. 设置别名

每次输入ssh -p port user@remote,时间久了就会觉得很麻烦,而且不好记

当配置完别名后就可以偷懒,比如:ssh manjaro 来代替上面的一大串

  • ~/.ssh/config里面追加以下内容:

    Host manjaro
        HostName ip地址
        User 用户名
        Port 22
    

保存之后,即可用ssh manjaro 实现远程登录,scp同样可以使用

系统信息相关命令

通过远程终端维护服务器时,查看服务器当前系统日期和时间 / 磁盘空间占用情况 / 程序执行情况

时间和日期

命令 作用
date 查看系统时间
cal 查看日历(默认当前月),-y 选项可以查看一年的日历

磁盘信息

命令 作用
df -h disk free 显示磁盘剩余空间
du - h [目录名] disk usage 显示目录下的文件大小
  • 选项说明
参数 含义
-h 以人性化的方式显示文件大小

进程信息

  • 所谓进程,通俗地说就是 当前正在执行的一个程序
命令 作用
ps aux process status 查看进程的详细状况
top 动态显示运行中的进程并且排序
kill [-9] [PID] 终止指定代号的进程,-9表示强行终止

ps默认只会显示当前用户通过终端启动的应用程序

  • ps选项说明
命令 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程

使用kill命令时,最好只终止当前用户开启的进程,不要终止root身份开启的进程,否则会导致系统奔溃

查找文件

命令 作用
find [路径] -name “*.py” 查找路径下扩展名为py的文件,包含子目录
  • 如果省略路径,表示在当前文件下查找

软链接

命令 作用
ls -s [被链接的源文件] [链接文件] 建立文件的软链接
  • 没有-s选项的建立的时一个硬链接文件
  • 源文件要使用绝对路径,为了方便移动链接文件后能继续正常使用

硬链接

命令 作用
ln [被链接的源文件] [链接文件] 建立

在linux中,文件名和文件数据时分开存储的

打包压缩

  • 在不同系统中,常用的打包压缩方式也是不同的
    • linux常用tar.gz
    • Mac 常用zip
    • Windows 常用rar
  • tar命令可以把一系列文件打包到一个大文件,也可以把大文件恢复成一个系列文件

打包

命令 作用
tar -cvf [打包后文件名.tar] [被打包的文件/路径] 打包一个文件/目录

解包

命令 作用
tar -xvf 打包的文件.tar 解压文件
  • tar选项说明
选项 含义
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名,f 后面要跟着.tar文件

压缩/解压

gzip

  • targizp一起用可以实现打包和压缩
  • tar命令中有个选项**-z**可以直接调用gzip,实现快速打包压缩解压功能
命令 作用
tar -zcvf [打包后文件名.tar.gz] [被打包的文件/路径] 压缩文件
tar -zxvf 打包的文件.tar.gz 解压文件
  • 解压选项说明

    选项 含义
    -C 解压缩到指定目录(目录必须存在)

bzip2

  • tarbzip2也可以实现文件打包压缩(用法和gzip一样)
命令 作用
tar -jcvf [打包后文件名.tar.gz] [被打包的文件/路径] 压缩文件
tar -jxvf 打包的文件.tar.gz 解压文件

计算机中文件大小的表示方式

单位 英文 含义
字节 B (Byte) 在计算机中作为一个数字单元,一般为8位二进制数
K (Kibibyte) 1KB = 1024B,千字节
M (Mebibyte) 1MB = 1024KB,百万字节
千兆 G (Gigabyte) 1GB = 1024MB,十亿字节,千兆字节
T (Terabyte) 1TB = 1024GB,万亿字节,太字节
P (Petabyte) 1PB = 1024TB,千万亿字节,拍字节
E (Exabyte) 1EB = 1024PB,百亿亿字节,艾字节
Z (Zettabyte) 1ZB = 1024EB,十万亿亿字节,泽字节
Y (Yottabyte) 1YB = 1024ZB,一亿亿亿字节,尧字节

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。