1.初学者须知


1.1对初学者的建议事项


Linux严格区分大小写 

Linux是严格区分大小写的,这一点和Windows不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 

Linux一切皆文件 

Linux中所有内容都是以文件的形式保存和管理的,硬件设备也是文件,这和Windows完全不同,Windows是通过设备管理器来管理硬件的。Linux的设备文件保存在/dev/目录中,硬盘文件是/dev/sd[a-p],光盘文件是/dev/hdc等。 

Linux不靠扩展名区分文件类型 

 靠权限位标识来确定文件类型的。Linux的可执行文件不过就是普通文件被赋予了可执行权限而已。 压缩包:*.gz、*.bz2、*.zip、*.tar.gz、*.tar.bz2、*.tgz。二进制软件包:.rpm

Linux中所有的存储设备都必须在挂载之后才能使用 

把这些空目录叫作挂载点(可以理解为Windows的盘符),把设备文件(如/dev/sdb)和挂载点(已经建立的空目录)连接的过程叫作挂载 

Windows下的程序不能直接在Linux中使用

(作为常识吧)

1.2了解Linux目录结构 

目 录 名 

目录的作用 

/bin/ 

存放系统命令的目录,普通用户和超级用户都可以执行。是/usr/bin/目录的软链接 

/sbin/ 

存放系统命令的目录,只有超级用户才可以执行。是/usr/sbin/目录的软链接 

/usr/bin/ 

存放系统命令的目录,普通用户和超级用户都可以执行 

/usr/sbin/ 

存放系统命令的目录,只有超级用户才可以执行 

/boot/ 

系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub) 

/dev/ 

设备文件保存位置 

/etc/ 

配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 

/home/ 

普通用户的家目录。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的家目录,所有普通用户的宿主目录是在/home/下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1/ 

/lib/ 

系统调用的函数库保存位置。是/usr/lib/的软链接 

/lib64/ 

64位函数库保存位置。是/usr/lib64/的软链接 

/lost+found/ 

当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录 

/media/ 

挂载目录。系统建议是用来挂载媒体设备的,如软盘和光盘 

/misc/ 

挂载目录。系统建议用来挂载NFS服务的共享目录。我们在刚刚已经解释了挂载,童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么设备都可以由管理员自己决定。例如超哥接触Linux的时候,默认挂载目录只有/mnt一个,所以养成了在/mnt下建立不同目录挂载不同设备的习惯。如/mnt/cdrom挂载光盘,/mnt/usb挂载U盘,这都是可以的 

/mnt/ 

挂载目录。早期Linux中只有这一个挂载目录,并没有细分。现在系统建议这个目录用来挂载额外的设备,如U盘、移动硬盘和其他操作系统的分区 

/opt/ 

第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过超哥还是习惯把软件放到/usr/local/目录中,也就是说,/usr/local/目录也可以用来安装软件 

/proc/ 

虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如/proc/cpuinfo是保存CPU信息的,/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系 

/sys/ 

虚拟文件系统。和/proc/目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息 

/root/ 

root的宿主目录。普通用户宿主目录在/home/下,root宿主目录直接在“/”下 

/run/ 

系统运行时产生的数据,如ssid,pid等相关数据。/var/run/是此目录的软链接 

/srv/ 


服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 ,/srv/clash

/tmp/ 

临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。我们建议此目录中不能保存重要数据,最好每次开机都把该目录清空 

/usr/ 

系统软件资源目录。注意usr不是user的缩写,而是“UNIX Software Resource”的缩写,所以不是存放用户数据的目录,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里 

/usr/lib/ 

应用程序调用的函数库保存位置 

/usr/local/ 


手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 

/usr/share/ 

应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 

/usr/src/ 

源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过超哥更习惯把手工下载的源码包保存到/usr/local/src/目录中,把内核源码保存到/usr/src/kernels/目录中 

/usr/src/kernels/ 

内核源码保存位置 

/var/ 

动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 

/var/www/html/ 

RPM包安装的Apache的网页主目录 

/var/lib/ 

程序运行中需要调用或改变的数据保存位置。如MySQL的数据库保存在/var/lib/mysql/目录中 

/var/log/ 

系统日志保存位置 

/var/run/ 

一些服务和程序运行后,它们的PID(进程ID)保存位置。是/run/目录的软链接 

/var/spool/ 

放置队列数据的目录。就是排队等待其他程序使用的数据,比如邮件队列和打印队列 

/var/spool/mail/ 

新收到的邮件队列保存位置。系统新收到的邮件会保存在此目录中 

/var/spool/cron/ 

系统的定时任务队列保存位置。系统的计划任务会保存在这里 


1.3几点建议


远程服务器关机及重启时的注意事项 

为什么远程服务器不能关机呢?远程服务器不方便物理开机

远程服务器在重启前,要中止正在执行的服务 。计算机的硬盘最怕在高速存储时断电或重启,非常容易造成硬盘损坏。

重启命令的选用 :

“shutdown -r now”命令重启。这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全重启命令。而且最好在重启前执行几次“sync”命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据同步到硬盘上。 

不要在服务器访问高峰运行高负载命令 

在服务器访问高峰,如果使用一些对服务器压力较大的命令,则有可能会造成服务器响应缓慢甚至死机。 

远程配置防火墙时不要把自己踢出服务器 

我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包。最好的方法当然是在服务器本地配置防火墙,这样就算不小心把自己的远程登录给过滤了,还可以通过本机登录来进行恢复。

指定合理的密码规范并定期更新 

合理分配权限 

防止误操,权限分配很繁琐,但是有价值,很有必要。

定期备份重要数据和日志 

服务器,存放重要data,丢失很严重 ,常调侃的rm -rf /*,删库跑路就能说明问题的严重性。



2.linux常用命令介绍


2.1重要的工具介绍

命令太多记不住?多用就好了

工具1 man命令,支持汉化

工具2 linux命令查询:​​https://wangchujiang.com/linux-command/​


2.2命令行快捷键说明

Tab键 

命令或文件补全 

ctrl+A 

把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。 

ctrl+E 

把光标移动到命令行结尾。 

ctrl+C 

强制终止当前的命令。 

ctrl+L 

清屏,相当于clear命令。 

ctrl+U 

删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便 

ctrl+Y 

粘贴ctrl+U剪切的内容。 


2.3命令的基本格式


 [root@localhost ~]# 命令[选项] [参数] 

ls是最常见的目录操作命令,主要作用是显示目录下的内容。

 命令名称:ls。

 英文原意:list。

 所在路径:/bin/ls。

 执行权限:所有用户。

 功能描述:显示目录下的内容。


[root@localhost ~]#ls [选项] [文件名或目录名] 

选项: 

-a: 显示所有文件

--color=when: 支持颜色输出,when的值默认是always(总显示颜色),也可以是never(从不显示颜色)和auto(自动) 

-d: 显示目录信息,而不是目录下的文件

-h: 人性化显示,按照我们习惯的单位显示文件大小

-i: 显示文件的i节点号

-l: 长格式显示

 


2.4认识目录操作命令

ls:

cd:切换所在目录的命令

代表用户的家目录

代表上次所在目录

代表当前目录

.. 

代表上级目录 

pwd:查询所在目录的命令

mkdir:创建目录的命令

rmdir:删除目录的命令


2.5认识文件操作命令 

touch:创建空文件或修改文件时间

stat:查看文件详细信息的命令

cat:查看文件内容

more:是分屏显示文件的命令

less:less命令和more命令类似,只是more是分屏显示命令,而less是分行显示命令

head:用来显示文件开头的命令

tail:显示文件结尾的命令

ln: 建立软/硬链接文件的命令


✨硬链接与软连接的特征 

硬链接特征: 

 源文件和硬链接文件拥有相同的Inode和Block 

 修改任意一个文件,另一个都改变 

 删除任意一个文件,另一个都能使用 

 硬链接标记不清,很难确认硬链接文件位置,不建议使用 

 硬链接不能链接目录 

 硬链接不能跨分区 


软链接特征: 

 软链接和源文件拥有不同的Inode和Block 

 两个文件修改任意一个,另一个都改变 

 删除软链接,源文件不受影响;删除源文件,软链接不能使用 

 软链接没有实际数据,只保存源文件的Inode,不论源文件多大,软链接大小不变 

 软链接的权限是最大权限lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限 

 软链接可以链接目录 

 软链接可以跨分区 

 软链接特征明显,建议使用软连接

 运维基础篇-初学linux_软链接运维基础篇-初学linux_linux_02


2.6目录和文件都能操作的命令

rm: 强大的删除命令,不仅可以删除文件,也可以删除目录

cp: 复制的命令

mv: 剪切的命令


2.7基本权限管理命令

权限简介

[root@localhost ~]# ls -l install.log 

-rw-r--r--. 1 root root 24772 1月14 18:17 install.log 

运维基础篇-初学linux_软链接_03


•    第1位代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。超哥在这里只讲一些常见的文件类型。

- “-”:普通文件。

- “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。

- “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。

- “d”:目录文件。Linux中一切皆文件,所以目录也是文件的一种。

- “l”:软链接文件。

- “p”:管道符文件。这是一种非常少见的特殊设备文件。

- “s”:套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。

• 第2~4位代表文件所有者的权限。


- r:代表read,是读取权限。

- w:代表write,是写权限。

- x:代表execute,是执行权限。

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。

• 第5~7位代表文件所属组的权限,同样拥有“rwx”权限。

• 第8~10位代表其他人的权限,同样拥有“rwx”权限。 


基本权限命令 

首先来看修改权限的命令chmod,其基本信息如下。

 命令名称:chmod。

 英文原意:change file mode bits。

 所在路径:/bin/chmod。

 执行权限:所有用户。

 功能描述:修改文件的权限模式。

chmod命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式,我们来解释一下


• 用户身份

- u:代表所有者(user)

- g:代表所属组(group)

- o:代表其他人(other)

- a:代表全部身份(all)


 赋予方式

- +:加入权限

- -:减去权限 

- =:设置权限

 

 权限

- r:读取权限(read)

- w:写权限(write)

- x:执行权限(execute)


数字权限

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。我们来看看这些数字权限的含义。

 4:代表“r”权限。

 2:代表“w”权限。

 1:代表“x”权限。

数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个。

 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。 

 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。

 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。


权限对文件和目录含义的解释

首先,读、写、执行权限对文件和目录的作用是不同的。


 权限对文件的作用。

- 读(r):对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。

- 写(w):对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。 

- 执行(x):对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。


 权限对目录的作用。

- 读(r):对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。

- 写(w):对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令。对目录来说,写(w)权限是最高权限。

- 执行(x):目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录。 


其他权限命令说明


chown

是修改文件和目录的所有者和所属组的命令

普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。 

普通用户可以修改所有者是自己的文件的权限。 


chgrp

修改文件和目录的所属组的命令


✨umask

[root@localhost ~]# umask 

0022 

#用八进制数值显示umask权限

[root@localhost ~]# umask -S 

u=rwx,g=rx,o=rx 

#用字母表示文件和目录的初始权限 

 文件的默认权限最大只能是666,而umask的值是022 

“-rw-rw-rw-”减去“-----w--w-”等于“-rw-r--r—” 

 目录的默认权限最大可以是777,而umask的值是022 


“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x” 



2.8帮助命令

man是最常见的帮助命令

info

help

--help选项 



2.9搜索命令 

whereis: 搜索系统命令的命令,可以查找到帮助文档的位置; 

which: 在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令

locate:按照数据库搜索,搜索速度快,消耗资源小,只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。 

find:在目录中搜索文件。 可以按照文件名搜索、文件大小搜索、修改时间搜索、按照权限搜索、按照所有者和所属组搜索、按照文件类型搜索,支持逻辑运算符、-exec选项(直接执行)、ok选项(会进行询问)

grep:在文件中提取和匹配符合条件的字符串行



2.10网络命令

配置IP地址有两种方法: 

1)setup工具 

2)vi /etc/sysconfig/network-scripts/ifcfg-eth0 

重启网络服务 

service network restart 


ifconfig:主要的作用就是查看IP地址的信息

ping:主要通过ICMP协议进行网络探测,测试网络中主机的通信情况

netstat:网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。

在CentOS 7.x中netstat命令默认没有安装,如果需要使用,需要安装net-snmp和net-tools软件包。

write:向其他用户发送信息。(基本无用) 

wall:wall命令用于给所有登录用户发送信息,包括你自己。(基本无用)(基本无用)

mail:Linux的邮件客户端命令,可以利用这个命令给其他用户发送邮件(基本无用)



2.11系统痕迹命令 

w:显示灯用户,和他正在做什么。

who:查看正在登陆的用

last:是查看系统所有登陆过的用户信息的,包括正在登陆的用户和之前登陆的用户

lastlog:查看系统中所有用户最后一次的登陆时间的命令

lastb:查看错误登陆的信息的


2.12挂载命令

mount 


挂载U盘

U盘会和硬盘共用设备文件名,所以U盘的设备文件名不是固定的,需要手工查询,查询命令: 

[root@localhost ~]# fdisk -l 

#查询硬盘

然后就是挂载了,挂载命令如下: 

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/ 

#挂载U盘。因为是Windows分区,所以是vfat文件系统格式

如果U盘中有中文,会发现中文是乱码。Linux要想正常显示中文,需要两个条件: 

✨ 安装了中文编码和中文字体

✨ 操作终端需要支持中文显示(纯字符终端,是不支持中文编码的) 


而我们当前系统是安装了中文编码和字体,而xshell远程终端是Windows下的程序,当然是支持中文显示的。那之所以挂载U盘还出现乱码,是需要在挂载的时候,手工指定中文编码,例如: 

[root@localhost ~]# mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/ 

#挂载U盘,指定中文编码格式为UTF-8 

如果需要卸载,可以执行以下命令: 

[root@localhost ~]# umount /mnt/usb/ 



挂载NTFS文件

✨为什么需要手动安装驱动?

 驱动直接放入系统内核之中。这种驱动主要是系统启动加载必须的驱动,数量较少。(系统启动必须的驱动较少)

 驱动以模块的形式放入硬盘。大多数驱动都已这种方式保存,保存位置在/lib/modules/3.10.0-862.el7.x86_64/kernel/中。

 驱动可以被Linux识别,但是系统认为这种驱动一般不常用,默认不加载。如果需要加载这种驱动,需要重新编译内核,而NTFS文件系统的驱动就属于这种情况。(其他驱动默认不加载)

 硬件不能被Linux内核识别,需要手工安装驱动。当然前提是厂商提供了该硬件针对Linux的驱动,否则就需要自己开发驱动了。

✨下载NTFS-3G插件 

我们从网站http://www.tuxera.com/community/ntfs-3g-download/下载NTFS-3G插件到Linux服务器上。 

✨安装NTFS-3G插件 

在编译安装NTFS-3G插件之前,要保证gcc编译器已经安装。具体安装命令如下: 

[root@localhost ~]# tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz 

#解压 

[root@localhost ~]# cd ntfs-3g_ntfsprogs-2013.1.13 

#进入解压目录 

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure 

#编译器准备。没有指定安装目录,安装到默认位置中 

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make 

#编译 

[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install 

#编译安装 

安装就完成了,已经可以挂载和使用Windows的NTFS分区了。不过需要注意挂载分区时的文件系统不是ntfs,而是ntfs-3g。挂载命令如下: 

[root@localhost ~]# mount -t ntfs-3g 分区设备文件名 挂载点 

例如: 

[root@localhost ~]# mount –t ntfs-3g /dev/sdb1 /mnt/win 



2.13其他命令介绍


管道符

ll -a /etc/ | more 

ll -a /etc/ | grep yum 

netstat -an | grep "ESTABLISHED" | wc -l 


alias 

alias 别名='原命令' 


压缩和解压缩命令

.zip\.gz\.tar.gz\.tar.bz2\.tar


sync

内存和磁盘数据同步


shutdown

关机


reboot

重启