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.,但是由于没有实际数据,最终访问时需要参考源文件权限
软链接可以链接目录
软链接可以跨分区
软链接特征明显,建议使用软连接
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
• 第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
重启