Linux
什么是Linux
人们日常在Windows上访问的百度、谷歌、淘宝、qq、迅雷等软件,支撑这些软件运行的,后台是成千上万的Linux服务器,它们时时刻刻进行着忙碌的数据处理和运算。通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)在Linux的世界里一切皆文件!
Linux背景
两个开发了C语言的大佬编写了unix,然后不同公司开发了不同的发行版并要付费使用,然后咧,林纳斯·托瓦兹(Linus Torvalds)基于unix编写Linux,响应斯托曼的GNU计划开源了代码,这个就是后来的Linux内核,后来由世界上无数个爱好者共同贡献修改,才有了现在好用的Linux,开源精神yyds!
VMware和Centos7
VMware可以在window中安装虚拟机,使用虚拟机来安装Linux,除了安装方便简单,也不怕讲电脑系统搞坏,无论你怎么玩,也不怕Linux坏掉,因为vmware可以快照!可以重新安装,多玩坏几次你就是装机大神了!
Linux有不少发行版,使用最多的是Centos以及Unbantu。
省略安装过程,因为随便百度或哔哩哔哩搜索就有详细的安装教程!
Centos7可以直接在windows和虚例机间复制粘贴文件,无需安装vmtools等,共享文件夹可以直接设置!
Linux目录结构
不同于Windows中的C、D盘的概念,在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树。
远程连接或开启虚例机进入Linux后输入
ls / 查看根目录下的文件目录
ls 显示当前所在位置的目录,如果所在位置没有文件就不会显示pwd 显示当前所在位置
根目录树下常见文件夹说明,有些文件目录不能轻易改动!
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。/srv:
该目录存放一些服务启动之后需要提取的数据。/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
- /tmp:
这个目录是用来存放一些临时文件的。 - /usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 - /usr/bin:
系统用户使用的应用程序。 - /usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 - /usr/src:内核源代码默认的放置目录。
- /var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
Xshell和Xftp
远程登录时少用root登录避免操作失误,一般是普通用户登录,用su - 用户名 切换成系统管理员,exit即可注销用户;运行级别概念之后补充;
Xshell来远程登录项目管理和操作【解决了中文乱码问题,而且很流畅】
新键会话就是新键一个连接,主机名就是填要远程控制的Linux的ip地址,端口号选22,
Xftp远程上传下载文件
协议要选SFTP,端口号也是22,如果乱码就在选项中更改为UTF-8就行
vi和vim
一般Linux都自带vi,vim可以认为是vi的增强版,vim有三种模式。
命令模式/正常模式
一般在Linux中输入
vim 文件名
默认进入命令模式,在命令模式的输入都会被识别为命令输入,通过命令或快捷键我们可以对文件进行一些操作,常用命令如下:
i 按i进入到插入模式/编辑模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
wq 退出vim编辑器
编辑模式/插入模式
在命令模式中按i进入编辑模式,在编辑模式下常用快捷键如下:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
命令行模式/底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
- q 退出程序
- w 保存文件
- :set nu 可以显示行号
- :set nonu 取消行号
- g 到文件最后一行,gg 到文件首行,u回退上一个步骤
- dd删除,yy拷贝,+数字表示操作光标下面多少行
按ESC键可随时退出底线命令模式
Vim键盘图:史上最全Vim快捷键键位图(入门到进阶) | 菜鸟教程 (runoob.com)
开机、重启命令
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。
例如你可以运行如下命令关机:
sync 将数据由内存同步到硬盘中。
shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。
shutdown –h now 立马关机
shutdown –h 20:25 系统会在今天20:25关机
shutdown –h +10 十分钟后关机
shutdown –r now 系统立马重启
shutdown –r +10 系统十分钟后重启
reboot 就是重启,等同于 shutdown –r now
halt 关闭系统,等同于shutdown –h now 和 poweroff
疑问:
有的弹幕说重启以后没法连接了,视频里老师也有这个情况,是Linux重启过后主机ip地址改变了吗?
在虚拟机中输入shutdown命令没有用,只有root才有权限;
总结:
关机和重启前都应该先sync一下;
参考文章:Linux 的启动流程 - 阮一峰的网络日志 (ruanyifeng.com)
用户管理
Linux系统下每一个用户至少属于一个组,包括root也在组里,只不过是root组,组的概念弹幕有说就像是用户池。
家目录/home,普通用户登录时会自动进入到自己的家目录比如/home/用户名。
常用命令:
useradd [选项] 用户名 ,会自动创建家目录,组名和用户名相同
useradd -d 指定目录 新的用户名 ,给新创建的用户指定家目录
passwd 用户名 ,给用户指定或修改密码
userdel 用户名 ,仅删除用户,家目录还在
userdel -r 用户名 ,用户和家目录都删
在实际工作中家目录一般不删
用户组命令:
groupadd 组名 ,增加组名
groupdel 组名 ,删除组名
usermod -g 用户组 用户名 ,将用户名对应的用户修改到对应的用户组里去
Linux
之后在慢慢填坑吧,这个文件还需要完善!