核心内容摘要
解码GB/T 7714:学术参考文献格式的技术实现与最佳实践
谁适合阅读本教程针对的是Linux服务器方面的知识适合从事运维或后端开发的人员阅读。
需要具备的知识如果你熟悉操作系统方面的知识相信你会很快学会 Linux。
本教程将于 Linux 的发行版本 Centos 为例来为大家介绍 Linux 系统的应用。
Linux 简介Linux 是一套免费使用和自由传播的类 Unix 操作系统是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。
它支持 32 位和 64 位硬件。
Linux 继承了 Unix 以网络为核心的设计思想是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
在服务器领域确定了地位通常服务器使用 LAMPLinux Apache MySQL PHP或 LNMPLinux Nginx MySQL PHP组合。
Linux vs Windows目前国内 Linux 更多的是应用于服务器上而桌面操作系统更多使用的是 Windows。
比较WindowsLinux界面界面统一外壳程序固定所有 Windows 程序菜单几乎一致快捷键也几乎相同图形界面风格依发布版不同而不同可能互不兼容。
GNU/Linux 的终端机是从 UNIX 传承下来基本命令和操作方法也几乎一致。
驱动程序驱动程序丰富版本更新频繁。
默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序之后所出的新硬件驱动依赖于硬件厂商提供。
对于一些老硬件如果没有了原配的驱动有时很难支持。
另外有时硬件厂商未提供所需版本的 Windows 下的驱动也会比较头痛。
由志愿者开发由 Linux 核心开发小组发布很多硬件厂商基于版权考虑并未提供驱动程序尽管多数无需手动安装但是涉及安装则相对复杂使得新用户面对驱动程序问题是否存在和安装方法会一筹莫展。
但是在开源开发模式下许多老硬件尽管在Windows下很难支持的也容易找到驱动。
HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动问题正在得到缓解。
使用使用比较简单容易入门。
图形化界面对没有计算机背景知识的用户使用十分有利。
图形界面使用简单容易入门。
文字界面需要学习才能掌握。
学习系统构造复杂、变化频繁且知识、技能淘汰快深入学习困难。
系统构造简单、稳定且知识、技能传承性好深入学习相对容易。
软件每一种特定功能可能都需要商业软件的支持需要购买相应的授权。
大部分软件都可以自由获取同样功能的软件选择较少。
Windows WSL 安装 LinuxWSLWindows Subsystem for Linux是微软为 Windows 用户提供的一个子系统它允许你在 Windows 上原生运行 Linux不是虚拟机不是双系统直接使用 Bash、apt、gcc、Python、Node.js 等 Linux 工具。
WSL 的版本区别特性WSL1WSL2内核架构翻译系统调用兼容层真正的 Linux 内核轻量虚拟机性能文件访问Windows ↔ Linux 访问更快Linux ↔ Linux 内部访问更快启动速度更快略慢Docker 支持不支持✅ 完全支持系统资源占用较少稍高推荐使用WSL2兼容性更强功能更完整。
Linux 系统目录结构登录系统后在当前命令窗口下输入命令ls /你会看到如下图所示:树状目录结构以下是对这些目录的解释目录作用详解常见文件 / 示例/根文件系统所有挂载点与路径的起点。
包含系统必须的子目录与入口结构。
无具体数据文件只有子目录结构。
/bin系统启动和单用户模式下必须的基础命令所有用户可执行。
ls,cp,mv,rm,bash/sbin系统管理与维护命令面向 root。
fsck,reboot,shutdown/usr用户级程序与库的主集合包含大部分系统软件、文档与工具。
/usr/bin,/usr/lib,/usr/share/usr/bin常规用户程序的主要放置目录。
python3,vim,git/usr/sbin管理工具的扩展集合。
useradd,apache2ctl/usr/lib/usr内程序所依赖的动态库与模块。
各类.so动态库/usr/local本机安装或编译软件的独立区域。
/usr/local/bin,/usr/local/lib/lib或/lib64系统启动核心库、动态链接器所在位置。
libc.so.6,ld-linux.so/etc系统级配置中心统一存放所有服务和系统配置。
passwd,group,fstab,ssh/sshd_config/home普通用户的个人主目录集合。
/home/user/.bashrc,/home/user/Documents/rootroot 用户的主目录。
/root/.ssh//var频繁变化的数据日志、缓存、数据库运行文件等。
/var/log,/var/lib,/var/cache/var/log所有系统与服务日志的集中位置。
syslog,auth.log,kern.log/var/cache应用和包管理器缓存。
/var/cache/apt//var/lib服务的持久化状态数据。
mysql/,docker//tmp程序运行时的临时文件区随时可清理。
临时文件、socket 路径/boot启动所需文件内核、initramfs、引导配置。
vmlinuz-*,initrd.img,grub/grub.cfg/dev设备节点集合文件即设备。
/dev/sda,/dev/null,/dev/tty0/proc由内核提供的虚拟文件系统展示系统与进程的实时信息。
/proc/cpuinfo,/proc/pid//sys设备、驱动、内核子系统的状态接口。
/sys/class/net/,/sys/block//mnt手动挂载的临时挂载点。
/mnt/usb/media自动挂载外接设备的默认位置。
/media/user/USB_DRIVE/run运行时数据存放点重启后清空。
*.pid, 运行状态 socket 文件在 Linux 中下列目录属于系统关键区误删或乱改都会直接破坏系统运行/etc — 系统配置核心所有关键配置集中于此。
任何错误修改都可能导致服务挂掉甚至系统无法启动。
/bin、/sbin、/usr/bin、/usr/sbin — 系统指令区系统预置命令的所在位置。
/bin、/usr/bin供普通用户使用的基础指令如ls位于/bin/ls。
/sbin、/usr/sbin系统管理指令主要由 root 使用。
/var — 动态数据区系统运行时不断写入的数据都落在这里。
重点是/var/log各种服务日志全部存放此处邮件、缓存、队列等内容也在此目录下维护。
Linux 忘记密码解决方法很多朋友经常会忘记Linux系统的root密码linux系统忘记root密码的情况该怎么办呢重新安装系统吗当然不用进入单用户模式更改一下root密码即可。
Linux 远程登录Linux 文件基本属性Linux 系统是一种典型的多用户系统不同的用户处于不同的地位拥有不同的权限。
为了保护系统的安全性Linux 系统对不同的用户访问同一文件包括目录文件的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限chown (change owner) 修改所属用户与组。
chmod (change mode) 修改用户的权限。
在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组如[rootwww /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot ……实例中bin文件的第一个属性用 d 表示。
d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
当为 d 则是目录当为 - 则是文件若是 l 则表示为链接文档(link file)若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)若是 c 则表示为装置文件里面的串行端口设备例如键盘、鼠标(一次性读取装置)。
接下来的字符中以三个为一组且均为 rwx 的三个参数的组合。
其中 r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。
要注意的是这三个权限的位置不会改变如果没有权限就会出现减号 - 而已。
每个文件的属性由左边
分的 10 个字符来确定如下图。
从左至右用
这些数字来表示。
第0位确定文件类型第
位确定属主该文件的所有者拥有该文件的权限。
第
位确定属组所有者的同组用户拥有该文件的权限第
位确定其他用户拥有该文件的权限。
其中第
1、
7位表示读权限如果用 r 字符表示则有读权限如果用 - 字符表示则没有读权限第
2、
8位表示写权限如果用 w 字符表示则有写权限如果用 - 字符表示没有写权限第
3、
9位表示可执行权限如果用 x 字符表示则有执行权限如果用 - 字符表示则没有执行权限。
Linux文件属主和属组[rootwww /]# ls -l total 64 drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql ……对于文件来说它都有一个特定的所有者也就是对该文件具有所有权的用户。
同时在Linux系统中用户是按组分类的一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
因此Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中mysql 文件是一个目录文件属主和属组都为 mysql属主有可读、可写、可执行的权限与属主同组的其他用户有可读和可执行的权限其他用户也有可读和可执行的权限。
对于 root 用户来说一般情况下文件的权限对其不起作用。
更改文件属性
chgrp更改文件属组语法chgrp [-R] 属组名 文件名参数选项-R递归更改文件属组就是在更改某个目录文件的属组时如果加上 -R 的参数那么该目录下的所有文件的属组都会更改。
chown更改文件所有者owner也可以同时更改文件所属组。
语法chown [–R] 所有者 文件名 chown [-R] 所有者:属组名 文件名进入 /root 目录~将install.log的拥有者改为bin这个账号[rootwww ~] cd ~ [rootwww ~]# chown bin install.log [rootwww ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log将install.log的拥有者与群组改回为root[rootwww ~]# chown root:root install.log [rootwww ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chmod更改文件9个属性Linux文件属性有两种设置方法一种是数字一种是符号。
Linux 文件的基本权限就有九个分别是owner/group/others(拥有者/组/其他)三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据文件的权限字符为 -rwxrwxrwx 这九个权限是三个三个一组的其中我们可以使用数字来代表各个权限各权限的分数对照表如下r:4w:2x:1每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的例如当权限为 -rwxrwx--- 分数则是owner rwx 421 7group rwx 421 7others --- 000 0所以等一下我们设定权限的变更时该文件的权限数字就是770。
变更权限的指令 chmod 的语法是这样的chmod [-R] xyz 文件或目录选项与参数xyz: 就是刚刚提到的数字类型的权限属性为rwx属性数值的相加。
-R: 进行递归(recursive)的持续变更以及连同次目录下的所有文件都会变更举例来说如果要将.bashrc这个文件所有的权限都设定启用那么命令如下[rootwww ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [rootwww ~]# chmod 777 .bashrc [rootwww ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc那如果要将权限变成-rwxr-xr--呢那么权限的分数就成为 [421][401][400]754。
符号类型改变文件权限还有一个改变权限的方法从之前的介绍中我们可以发现基本上就九个权限分别是user用户group组others其他那么我们就可以使用u, g, o来代表三种身份的权限。
此外a则代表all即全部的身份。
读写的权限可以写成 r, w, x也就是可以使用下表的方式来看chmodugoa(加入)-(除去)(设定)rwx文件或目录如果我们需要将文件权限设置为-rwxr-xr--可以使用 chmod urwx,grx,or 文件名 来设定:# touch test1 // 创建 test1 文件 # ls -al test1 // 查看 test1 默认权限 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1 # chmod urwx,grx,or test1 // 修改 test1 权限 # ls -al test1 -rwxr-xr-- 1 root root 0 Nov 15 10:32 test1而如果是要将权限去掉而不改变其他已存在的权限呢例如要拿掉全部人的可执行权限则# chmod a-x test1 # ls -al test1 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1Linux 文件与目录管理我们知道 Linux 的目录结构为树状结构最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
绝对路径路径的写法由根目录 / 写起例如 /usr/share/doc 这个目录。
相对路径路径的写法不是由 / 写起例如由 /usr/share/doc 要到 /usr/share/man 底下时可以写成 cd ../man 这就是相对路径的写法。
处理目录的常用命令接下来我们就来看几个常见的处理目录的命令吧ls英文全拼list files: 列出目录及文件名cd英文全拼change directory切换目录pwd英文全拼print work directory显示目前的目录mkdir英文全拼make directory创建一个新的目录rmdir英文全拼remove directory删除一个空的目录cp英文全拼copy file: 复制文件或目录rm英文全拼remove: 删除文件或目录mv英文全拼move file: 移动文件与目录或修改文件与目录的名称你可以使用man [命令]来查看各个命令的使用文档如 man cp。
Linux 文件内容查看Linux系统中使用以下命令来查看文件的内容cat 由第一行开始显示文件内容tac 从最后一行开始显示可以看出 tac 是 cat 的倒着写nl 显示的时候顺道输出行号more 一页一页的显示文件内容less 与 more 类似但是比 more 更好的是他可以往前翻页head 只看头几行tail 只看尾巴几行Linux 用户和用户组管理Linux系统是一个多用户多任务的分时操作系统任何一个要使用系统资源的用户都必须首先向系统管理员申请一个账号然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪并控制他们对系统资源的访问另一方面也可以帮助用户组织文件并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后就能够进入系统和自己的主目录。
实现用户账号的管理要完成的工作主要有如下几个方面用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。
Linux系统用户账号的管理用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
刚添加的账号是被锁定的无法使用。
添加新的用户账号使用useradd命令其语法如下useradd 选项 用户名
删除帐号如果一个用户的账号不再使用可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel命令其格式如下userdel 选项 用户名常用的选项是 -r它的作用是把用户的主目录一起删除。
修改帐号修改用户账号就是根据实际情况更改用户的有关属性如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令其格式如下usermod 选项 用户名常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等这些选项的意义与useradd命令中的选项一样可以为用户指定新的资源值。
用户口令的管理用户管理的一项重要内容是用户口令的管理。
用户账号刚创建时没有口令但是被系统锁定无法使用必须为其指定口令后才可以使用即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。
超级用户可以为自己和其他用户指定口令普通用户只能用它修改自己的口令。
命令的格式为passwd 选项 用户名可使用的选项-l 锁定口令即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名则修改当前用户的口令。
Linux系统用户组的管理每个用户都有一个用户组系统可以对一个用户组中的所有用户进行集中管理。
不同Linux 系统对用户组的规定有所不同如Linux下的用户属于与它同名的用户组这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。
组的增加、删除和修改实际上就是对/etc/group文件的更新。
增加一个新的用户组使用groupadd命令。
其格式如下groupadd 选项 用户组可以使用的选项有-g GID 指定新用户组的组标识号GID。
-o 一般与-g选项同时使用表示新用户组的GID可以与系统已有用户组的GID相同。
如果要删除一个已有的用户组使用groupdel命令其格式如下groupdel 用户组
修改用户组的属性使用groupmod命令。
其语法如下groupmod 选项 用户组
如果一个用户同时属于多个用户组那么用户可以在用户组之间切换以便具有其他用户组的权限。
用户可以在登录后使用命令newgrp切换到其他用户组这个命令的参数就是目的用户组。
例如$ newgrp root这条命令将当前用户切换到root用户组前提条件是root用户组确实是该用户的主组或附加组。
类似于用户账号的管理用户组的管理也可以通过集成的系统管理工具来完成。