Part_1
1,自我介绍
我是即将毕业的通信工程的大四学生,我申请阿里云服务器是为了学习linux操作系统,主要的原因有以下两点:(1)以前在学校使用单片机的都是跑裸机,后来觉得裸机渐渐的力不从心了,感觉程序跑起来有些费劲;(2)毕业之后工作的需要,公司的soc嵌入式的研发工作(C编程、Verilog编程、仿真等)都是在Linux服务器上进行,学习linux方便对后续工作的开展。
2,参加“飞天加速计划”
我是一开始通过b站来了解大佬们怎么快速的学习linux,在了解前辈的linux学习经历及建议后,首先我需要搭建一个linux的环境,方便我进行命令行的操作学习,Linux环境搭建主要有两种方式:
(1)PC上建立一个Linux虚拟机;
(2)找一台linux云服务器。
我选择第二种方式使用一台linux的云服务来学习linux操作系统,为什么这么做呢,其实很简单,根据大佬们的建议以及我的想法来说,linux在嵌入式中的的学习的重点就是基本的命令行,shell和makefile的操作,这才是重点,而自己安装虚拟机相对于云服务器来说繁琐的很,不如云服务器省心,云服务器有各种linux的发行版一键安装方便学习,相反如果虚拟机上的系统搞坏了,还要从新弄,当然在虚拟机上安装linux还会遇到其他问题,总而言之浪费时间,时间不应该浪费在搭建linux环境上,linux的基本操作才是重点,先把重点搞懂之后,再自己在PC端上安装虚拟机。
在明确方向后,我开始寻找一台合适的云服务器,根据前辈们推荐,主要的选择是阿里云服务器ECS和腾讯的云服务器,虽然都有学生优惠活动,但阿里云提供学生免费使用的计划,而且普遍反映阿里云服务器稳定且快速,就参加了“飞天加速计划”。
Part_2
0,使用感受
我大概使用了阿里云ECS一周,总的体验是,使用阿里云ECS很是方便,节约时间。我首先跟着教程简单的熟悉一下服务器使用的流程,然后自己创建实例,修改密码,选择linux的发新版一键安装,等着是实例重启就好,可以安装xshell远程工具来方便的控制服务器。
我一开始安装的Centos 8版本,后来发现,Cenos 8已经不维护了,于是我直接更换操作系统 (aliyun.com),很方便且快速的就完成了。然后直接开始学习,跟着教程学习基本的命令行操作,以下是几天时间内我使用阿里云ECS学习linux操作系统的感悟。
1,linux的发展史和应用
2022.5.22
linux是unix的一个分支,运行在IA(主要是运行在intel,AMD等主要芯片上的)分时操作系统
linux的命令行和图形化界面,x windows不用管,主要是网络应用和嵌入式应用,入门建议选择centos版本的linux,安装虚拟机,忘记windows的思维方式,命令行操作,
2,linux的安装及环境
linux安装版本
先搞个云服务器用用再说,再安装虚拟机,安装centos7的版本,维护到2024年,8的版本都已经停止维护了,换了个centos7.8的
阿里云服务器ECS:root,密码:xxxxxxx,VNC密码:xxxxxx
linux环境安装
2022.5.23
1,linux云服务器
1,先打开安全组,开启端口号,安装宝塔面板,使用宝塔面板所有安装是可视化的,傻瓜式的,(先打开安全组,开启端口号)
2,命令式安装
使用命令行安装,宝塔面板验证
xshell远程连接云服务器的,用于远程连接Linux服务器,方便用户对Linux服务器上的资源文件进行远程操控,XShell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。如果安装的是虚拟机的话,应该用不着这个工具;xftp上传东西的软件,本地windows ->远程服务器linux,直接从窗口拖文件
xshell先新建在远程连接主机 Xshell的复制粘贴要自己在工具那里设置快捷键
2,linux虚拟机
先学会linux基本操作,再安装
3,linux常用命令
命令不会用,man查看详细的信息,--hlep查看常用的功能
命令行前面是#,代表是管理员在操作,¥是普通用户在操作,exit退出普通用户身份
terminal粘贴快捷键:ctrl+shift+v
ctrl+滚轮:放大缩小字体
ctrl+c:终止命令
1,文件命名规则
/不可用在文件命名上,他代表根目录;空格别用,输命令行的时候会有问题ssh a b这是打开两个文件,而不是打开a b这个文件,linux就会出问题;.别用,.代表隐藏文件,像windows的查看隐藏文件一样;大小写严格区分和C语言一样的
2,命令格式
命令 -选项 参数(有空格的)
ls -la -/etc==ls -l -a -/etc
linux的目录是倒树状的文件格式,.代表当前目录,..代表当前目录的父目录
在linux里面。所有的文件都是二进制文件,包括各种命令
root:
/sbin
/usr/sbin
all users:
/bin
/usr/bin
只要是bin的,所有用户都可以执行的,而sbin只有root可以执行
3,文件处理命令
目前这些命令都是存储在/bin的目录下
ls
英文原意:list==ls
命令所在目录:/bin/ls(bin表所有用户可以使用)
执行权限:所有用户
功能:显示目录文件
语法:ls -ald=ls -a -l -d
ls -a(all:所有文件,包括隐藏的)
ls -l(long:详细信息)
ls -d(directory:目录属性)
ls -i(inode:i节点),任何东西都要有数字标记,linux内核只能认出数字,文件的标记叫i节点,通过i节点来判断文件,还有其他的节点,都不一样)每个文件必须要有一个i节点,如果没有i节点,那么文件无法访问了
输入ls -ld /....查看该根目录的详细信息
输入ls -l /查看该根目录下子文件的详细信息
例:drwxr-xr-x. 76 root root 4096 May 23 08:08 etc
(1)drwxr-xr-x=d+rwxr-xr-x==d+rwx r-x r-x
r=read;w=write;x=execute;
d rwx r-x r-x
首字母: 所有者u + 所属组g + 其他人o=linux使用的所有类型的用户
d=directiry目录 user/onwer group other
-=二进制文件 读写执行的操作权限都有 只能写和执行 写和执行
l=link软连接文件
(2)76:硬连接数,没啥用
(3)root root 4096
所有者所属组 文件大小:不太准确,没什么参考价值,要用其他命令来查文件大小
数据块是最小的存储单位512byte,每个文件占用一个数据块,放不满就空着
cd
change directory
pwd
print working directory
touch
创建新文件
mkdir
make directory
创建新的目录
cp
copy
mv
move移动文件和改名
不用在当前目录下操作,而且两个功能可同时使用
rm
remove删除
rm=’rm -i‘也就是删除的时候会提示一下,-i==inquire询问
rm -f file
-f=force强制(删除),不需要确认,不会询问yes or no
rm -r dir删除目录,目录下的文件会挨个确认
rm -rf dir直接删除目录,不会询问
cat
concatenate(连接) and display files
适用于显示的文件内容少的
more
分页显示文件内容,适用于信息多的
空格和回车是内置的命令,自己体会其作用
head
查看文件的前几行
tail
查看文件的后几行
ln
link
产生硬链接和软连接文件
软链接文件特点
权限都是rwx
类似于windows的快捷方式
硬链接文件特点
权限和源文件都是一样的
除了名字不一样,其他都一样,类似于copy,==copy -p+同步更新,但是它是同步更新的,而且copy的文件创建的时间值是不一样的(在硬连接数不考虑的情况下,)
区别:源文件删除了,硬链接文件还存在,硬链接和源文件有同一个(incode)i节点,一个数字两个映射,硬链接不能跨分区,生成的硬链接得在同一个分区下,软链接无所谓
4,权限管理命令
目前这些命令都是存储在/bin的目录下
chmod
change the permissions(权限) mode of a file
更改文件和权限
chmod {ugo}{+-=}{rwx} 目录或者文件
chmod (mode:421) 目录或者文件
chmod u-rwx file,chmod -r file,chmod u+w file
chmod 751 file= rwxr-x--x
rwx
字符 | 权限 | 对文件的含义 | 对目录的含义 |
r | 读权限 | 可查看文件内容(cat、more、head and so on) | 可列出目录中的内容(ls) |
w | 写权限 | 可修改文件内容(echo、vi) | 可以在目录中创建和删除文件(touch、mkdir、rm) |
x | 执行权限() | 可执行文件(命令、脚本) | 可以进入目录(cd) |
这就代表只有当文件的目录有w权限时,你才能删除该文件
chown
change file ownership改变文或者目录的所有者
chgrp
change file ownership改变文或者目录的所属组
umask
显示文件或者目录缺少的权限
0022
0 0 22
特殊权限位ugo
022代表用户权限位,权限掩码值类似子网掩码,(真正的用户权限值:777-022=755)
默认的umask是022,也就是755,都有可执行权限但是新建的文件是644,三类linux用户(ugo)都没有x权限,这是因为linux基本权限规则:缺省创建的文件不能授予可执行x权限,为了安全吧
可以通过umask 更改权限掩码值
5,文件搜索命令
2022.5.24
目前这些命令都是存储在/usr/bin的目录下
which & whereis
只能查找命令所在的目录
which ls还能显示出来命令的别名,
whereis ls还能够显示出来命令的帮助文档
find
查找任何文件和目录
第一原则,尽量缩小查找范围,不要再根目录下查找,使用的资源越少越好
常用使用的功能:
1,根据文件名查找 -name
find /etc -name init只会查找出和文件名完全相同的文件,其他的带有相关该文件名的文件不会显示出来
使用通配符:*:匹配任意字符,?:匹配单个字符
find /etc -name init*: 查找init开头的文件
find /etc -name init???:查找开头为init的7位字符的文件
2,根据文件大小查找 -size
block:512B==0.5KB
1M=1024K=1024*1024B
根据数据块的数量来查找:+,-,整好就直接数字
查找大于100M的文件:find /etc -size +204800
查找小于100M的文件:find /etc -size -204800
3,根据文件所有者查找 -user
4,根据时间查找
1,天,ctime,atime,mtime
2,分钟,cmin,amin,mmin
c-change改变,表示文件属性被改过,所有者,所属组,权限
a-access访问
m-modify修改,表示文件内容被修改过
-之内,+之外超过
find /etc -mmin -120:查找120分钟内的
5,根据文件类型查找-type
f:二进制文件,
l:软连接文件
d:目录
6,根据i节点查找-inum
find . -inum 16
.代表根据在当前目录下查找
目的是为了查找奇奇怪怪的文件,然后删除,ls -i查出i节点数字,然后使用-exec连接符进行删除
组合查找:
连接符
1,-a and 逻辑与(都满足条件进行查找),-o or 逻辑或(满足一个条件即可查找)
2,find /directory -exec 命令 {} \;
-ok 进行询问确认
{},代表find查询的结果
\转义符,让符号命令使用本身的含义
;代表结束
locate
寻找文件或者目录
unix里没有这个命令,linux里才有
locate查找很快,但是有的时候会找不到文件,他是从系统文件目录的数据库查找,
需要更新数据库,find是在硬盘里找,
updatedb
update the slocate database
建立整个系统目录文件的数据库
执行权限为root
grep
在文件中寻找字符匹配的行并输出,
grep ftp 源文件
6,帮助命令
man
man==manual
man 命令或者配置文件,看配置文件的时候,直接man 配置文件,不要目录
获取帮助信息
man ls
man显示调用more来显示信息,more空格下一页,回车下一行,q是退出
如果一个命令和配置文件是同名的,man 之后的查看的是命令的帮助,不是配置文件的
man又好多种(1-9),5代表的是查看配置文件的帮助,man 5 配置文件就可以查看
1代表命令的帮助,默认就是1,命令的帮助,可以不写
info
info==information
linux才有,unix无
和man差不多
whatis,apropos,makewhatis
获得索引的简短说明信息
相当于man -k
whatis,apropos使用数据库搜索,命令发生错误就是whatis database没有建立
--hlep
命令 --help
显示命令的主要选项
help
查看shell内置命令的帮助
man查不到,就可能是shell的内置命令
7,压缩解压命令
2022.5.25
gzip
只能压缩文件,目录不行,且不保留原文件,只剩个压缩包
linux的压缩包放到windows上都可以使用软件解压缩,反过来就不一定了
windows的.rar-->linux解压不了
压缩文件
后缀.gz
gunzip
解压缩
tar
打包目录
tar 选项 目录
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
压缩后的文件格式:.tar.gz
tar -zcvf newfile.tar.gz newfile 生成newfile.tar.gz文件
如果有些系统tar命令不支持-z,
可以先 tar -cvf newfile.tar newfile
再压缩 gzip newfile.tar
解压包
-c--->-x解压.tar包
zip
.zip在linux和windows默认支持的文件就是zip格式
可以压缩目录或者文件,还可以保留原文件
unzip解压
.bzip2
只能压缩文件,适合压缩大型文件,压缩比超大
压缩格式.bz2
-k保留原文件
解压bunzip2
8,网络通信命令
write
实时通信工具,给登录的用户发送信息
write 用户
wall
给所有人发送信息,广播
ping
测试网络连通性
ping 192.168.11,需要ctrl+c终止,否则会一直ping下去
ping -c 3 192.168.11,ping三次就结束
c==count次数,
ping -s 60000 192.168.11,改变发送包的大小
s==size,
ifconfig
查看网卡的信息,网络配置的信息
-a==all加不加都都行,
showdown
关机
reboot
重启
9,shell技巧
一、什么是Shell
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
二、什么是脚本
脚本就是由Shell命令组成的文件,这些命令都是可执行程序的名字,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
三、Linux中有哪些脚本解释器
有dash和bash两种,但dash没有bash功能全面,所以通常使用bash。可以通过命令来查看系统中的脚本解释器: ls -l /bin/*sh
bashell
命令补全
Tab键
命令历史
history
命令别名
命令的别名隐含着命令实际的功能
alias
作用:查询命令的别名,给命令重新定义
alias copy=cp
alias xrm="rm -r"组合要使用双引号
unalias删除别名
定义的别名,等到linux关机,还会存在吗
输入/输出重定向
shell的进程预先定义3个文件描述字,
0 | 1 | 2 |
STDIN标准输入 | STDOUT标准输出 | STNERR标准错误输出 |
STD==standard
输出重定向 0>
改变输出的位置,不在显示屏输出
ls -l/temp > /temp.msg
把ls -l的结束输出到/tmp.msg文件里,但是>会把temp文件里的内容清空
追加>>,不会覆盖之前的内容
输入重定向 1<
不在键盘输入,文件作为输入
wall < /etc/moth
错误输出重定向 2>
为什么文件好像有好多后缀名
输入输出的0,1可以省略,到了这就不能省略了,要不就和输出重定向一样了
错误输出重定向,可以把错误信息发送到重定向的文件里
管道 |
命令1|命令2|命令3|.....
把一个命令的输出作为另一个命令的输入
命令连接符
;间隔命令顺序以此执行
&& 连接两个命令,第一个命令成功,第二个命令才会执行,同理执行失败,后边也不会执行
|| 前面命令失败,后边的命令才会执行
命令替换符
`
ls -l `which touch右边还有一个符号
which touch的输出,作为ls -l的参数
4,文本编辑器Vim
2022.5.26
命令见pdf
Vim/Vi文本编辑器,只有命令没有菜单,三种模式
vim book,
主要应用功能,配置文件修改和shell脚本编程
修改只读文件,只有文件所有者和root可以,特权用户root,
unab取消ab功能
unmap取消map快捷键
Vi退出后,设置和快捷键没有保存,需要编辑Vi的配置文件,存在用户的宿主目录下 ~home directory
(1)管理员root的宿主目录:/root, (2) 普通用户的的宿主目录:/home/用户名
vim的配置文件~/.vimrc存在(1)(2)中,vi打开配置文件,在配置文件中进行命令和快捷键的保存就会永久有效了
5,linux引导流程解析
2022.5.27
1,固件
固件firmware(coms/bios)--->上电自检post,检测硬件是否良好,coms是固化在主板上的程序,bios是操作coms的管理控制界面,不同的硬件平台固件也是不一样的,固件和操作系统无关,就算是裸机无操作系统,也得先加电自检,这是上电的必须步骤
固化在固件里的hwcolck硬件时钟怎么和linux操作系统里的软件时钟同步
命令
date:查询软件时钟,
hwclock:查询硬件时钟
软硬时钟按理说应该是一样的,如果不一样,可能会出现time error,同步时钟可以在命令行中完成,hwclock --help
-s, --hctosys set the system time from the hardware clock-w, --systohc set the hardware clock from the current system time
如果两个时钟都是错的,那就修改一个,再已修改好的为基准,再调用上面的命令,man或者--hlep查询命令的信息,
2,自举
固件自检没问题后,读取硬盘的数据,首先读取bootloader,自举程序bootloader(GRUB)--->载入内核,各操作系统都需要bootloader,windows的是ntldr,linux的叫做GRUB,一般在/boot目录下,bootloader的作用就是载入内核,打开grub.conf配置文件可以看到,(内核)kernel /vmlinuxz-2.6.18-194.el5,是一个单独的可执行文件 z代表压缩文件,2为主版本号,6为次版本号,18为末版本号,次版本号偶数为正式版,奇数为测试版,选择稳定的内核版本
3,载入内核
载入内核kernel 在引导期间内核只做两件事:硬件驱动和启动init进程--->驱动硬件
4,启动进程init
unix系统中,init为第一个可存在的进程,processid(PID)恒为1,PID为进程的数字表示==标识,linux只认数字
5,读取执行配置文件/etc/inittab
Part_3
感悟
首先要感谢阿里云对高校学生的支持,极大的节省了学习时间,而且相当方便,由于时间原因,我只使用了几天时间,基本都是在学习操作linux的命令行操作,阿里云ECS的很多功能还没用到,但这几天的时间,就我而言,我觉得阿里云ECS给像我一样的初学者了一个极其方便的强大的学习平台,真的很方便,希望阿里云可以给我续租俩月的时间,让我可以随心所欲的对linux进行学习操作。谢谢!