Linux 学习笔记

Linux 概念

Linux 内核

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

Linux 发行版

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

Linux 目录结构

image
  • /:根目录,一般根目录只存放目录
  • /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在设置权限时,可以简单使用三个数字分别对应拥有者 / 其他用户的权限
image
  • 常用数字组合有
    • 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 远程登录和复制文件

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

SSH 高级

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

01. 免密码登录

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

采用非对称加密算法

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

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,一亿亿亿字节,尧字节
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容