开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux必需掌握的基础(一)

简介:
+关注继续查看

第1章 Linux简介

Linux是一套遵守POSIX(Portable Operating System Interface for Computer Enviroment,即可移植操作系统环境接口)规范的操作系统。它以其系统简明功能强大性能稳定以及扩展性和安全性高著称,可以支持多用户、多任务环境,具有较好的实时性广泛的协议支持,同时具有优秀的系统兼容性可移植性

Linux起源于UNIX。1969年,Bell实验室的Ken Thompson在一台闲置的PDP-7计算机上设计了一种多用户、多任务的操作系统。不久,Dennis Richie加入并与其共同开发了最早的UNIX。早期的UNIX由汇编语言编写,在其第三个版本用C语言进行了重写。之后,UNIX移植到更为强大的 DEC PDP-11/45与11/70计算机上运行并逐渐走出实验室成为主流操作系统之一。

UNIX通常在价格不菲的企业级服务器或工作站等级的服务器上使用,因此得不到普及。Andre S.Tanenbaum教授开发出在PC上使用的具有相同功能而且是免费的类似UNIX的系统——Minix系统。 之后,1991年芬兰赫尔辛基大学技术科学系的Linus Torvalds在Minix的基础上开发了Linux,并将0.02版放到Internet上,作为自由和开放源代码的自由软件传播,来自世界各地的编 程人员对其进行修订和扩充。1994年,在互联网上的志愿开发者协同开发下,Linux发布了标志性的1.0版本。

Linux的特点及主要优势:

1、免费的专业级操作系统:Linux遵守公共许可GPL,因此任何人都有共享和修改的自由,并且可以免费得到Linux的源代码;

2、良好的可移植性:Linux可以在所有的计算机平台上运行,包括笔记本、PC、工作站甚至大型机,支持x86、MIPS、PowerPc、SPARC等主流系统架构,并同时支持32位和64位操作系统。

3、良好的用户界面:由MIT开发的X-Windows可以为用户提供一个具有多种窗口管理功能的对象集成环境。

4、低成本:Linux不仅内核是免费的,其许多系统程序及应用程序也是自由软件,用户可以从网上免费获得。

5、内核的定制和剪裁:Linux内核采用动态加载技术,用户可以将暂不需要的模块从内核中剪裁掉,在需要时再重新加载,从而定制出很小的内核,甚至可以在一张容量为1.44M的软盘上安装一个Linux操作系统。

6、广泛的协议支持:网络是Linux的生命。Linux在网络方面具备与生俱来的优势,其内核支持的主要协议包括:
TCP/IP通信协议。
IPX/SPX通信协议。
Apple Talk通信协议。包括X.25及Frame-relay。
ISDN通信协议。
PPP、SLIP、PLIP等通信协议。
ATM通信协议。

7、丰富的应用程序和开发工具支持:大部分在UNIX系统下的工具已经被成功移植到Linux系统上,包括几乎所有的GNU软件库。
语言及编程环境:C、C++、Java、Perl和Fortran等。
数据库:MYSQL、PostgreSQL及Oracle等。
Shell:bash、tesh、ash及csh等。
编辑器:emacs、Gedit、VIM及pico等。
图形环境:GNOME、KDE、GIMP、IceWM等。
文字处理软件:Opernoffice、Kword、abiWord等。
浏览器:Firefox等。

8、良好的安全性和稳定性:Linux是多任务、多用户操作系统,可以支持用户同时使用系统的处理器、内存、磁 盘和外设等资源。为此,Linux采取了多种安全技术措施,包括对读、写进行权限控制,带保护的子系统,审计跟踪,核心授权等等。Linux本身的设计就 对病毒攻击提供了非常好的防御机制,因此Linux系统基本上不用安装杀毒软件。Linux内核有极强的稳定性,可以长年累月地运行而不死机,因此被广泛 应用在网关和防火墙。

Linux的版本继承了UNIX版本制定的规则,分为内核版本发行版本两类。

内核是运行程序和管理如磁盘和打印机等硬件设备的核心程序,其开发规范一直由Linus领导的开发小组控制。内核具有两种不同的版本号:实验版本产品化版本。 版本的格式通常为“主版本号.次版本号.修正号”。主版本号和次版本号表示有重要的功能变动,修正号表示较小的变动。次版本号如果是偶数说明这种版本相对 稳定,是可以产品化的版本,如果是奇数说明是实验版本,内核中可能加入一些测试功能, 是一个内部可以存在BUG的测试版。比如2.6.34是产品化版本,2.5.73是实验版本。产品化版本是修订实验版本中存在的错误后的副本。

全球有超过100种的Linux发行版本,较知名的包括:

1、Red Hat Linux:目前流行最广的发行版。主要特点是方便简易的安装和操作使用,用户可以名去繁杂的安装和设置工作,尽快开始使用Linux。其图形化的操作环 境与Windows不相上下。Red Hat Linux曾被权威的计算机杂志Info World评为最佳的Linux。

2、Slackware Linux:由Patrick Volkerding创建于1992年,是历史最悠久的Linux发行版。主要特点是尽量采用原版的软件包而不进行任何修改,并且一直坚持 KISS(Keep It Simple and Stupid)原则。Slackware追求效率而非易用性,所以使用配置文件进行管理,对Linux的新用户是十分困难的。Slackware提供了更 多的透明性和灵活性,更适合比较有经验的使用者。用户可以通过Slackware深入学习Linux或者安装编译自己的软件程序。有人评价:学会了Red Hat Linux,则只学会了Red Hat Linux;而学会了Slackware Linux,则学会了Linux。

3、Mandriva Linux:原名Mandrake,最早由Gal Duval创建并于1998年7月发布。特点是集成了图形化的桌面环境及图形化的配置工具。最早基于Red Hat进行开发,Red Hat默认的桌面是GNOME,而Mandriva则采用KDE。

4、Debian Linux:最早由Ian Murdock于1993年创建,是迄今为止最遵循GNU规范的Linux系统。特点是使用了Debian特有的软件包管理工具dpkg,使得Debian上安装、升级、删除和管理软件包变是非常容易。

5、SUSE Linux:最早由德国的SUSE linux AG公司发行维护,特点是使用了自主开发的软件包管理系统YsST。2003年11月,Novell收购了SUSE,并对SUSE Linux进行了改进,使之成为Red Hat有力的竞争对手。

6、红旗Linux:中国人自行研发的Linux,特点是提供了良好的中文支持,其界面和操作设计也更符合中国人的习惯。

 

自由软件创始人Richard Stillman于1984年开创了GNU Project (GNU采用递归方式定义:是“GNU's Not Unix”的缩写),该项目得到业界认可并迅速遍及全球。大量志愿者在GNU的激励下,编写了大量自由软件,Richard Stillman本人也开发了很多著名的自由软件,包括GNU Compiler Collection (GCC)、GNU symbolic debugger (GDB)和GNU Emacs。由于GNU Emacs的成功,Richard Stillman在1985年建立了自由软件基金会FSF(Free Software Foundation)。

GPL是由FSF发行的用于计算机软件的证书,取得该证书的软件被称为自由软件。GPL与传统商业软件许可协议CopyRight相对立,所以又被 称为CopyLeft。GPL保证任何人有共享和修改自由软件的自由,并且规定在不增加费用的条件下可以得到自由软件的源代码。同时还规定自由软件的衍生 作品必须以GPL作为它重新发布的许可协议,即GPL在给予用户各种权利的同时,也要求用户通过修改其自由软件而得到的软件也必须成为自由软件,从而从整 体上保证了自由软件的衍生和传播。

Linux树立了“自由开放之路”的典范。它的发展状大以事实证明了自由软件发展道路的成功。

 

第2章 初识Linux

计算机启动时,BIOS(从硬盘中)装载MBR(主引导记录),然后从当前分区启动,从而运行启动器程序。启动器有两种:LILO(LInux LOader)和GRUB(GRand Unified Bootloader)。通过启动器,用户可以选择要启动的操作系统。如果选择Linux,Linux则从引导程序手中接管CPU的控制权,继而开始执行 Linux的核心映像代码,开台Linux的启动过程。

Linux启动后,提供两种方式供用户登录:文本方式和图形方式。如果以图形方式登录,登录成功后可以直接进入KDE或Gnome等窗口管理器。当 Linux系统引导时,启动的第一个进程是init(/sbin/init)。init程序会根据/etc/inittab文件的配置内容执行相应的脚 本。init是在linux下,在系统启动过程中,初始化所有的设备驱动程序和数据结构等之后,由内核启动的一个用户级程序,并由此init程序进而完成 系统的启动过程。init会根据/etc/inittab文件中的配置内容执行相应的脚本,完成系统的初始化工作。(Ubuntu上使用upstart完 成系统的启动,而且读取的脚本为/etc/init/rc-sysinit.conf文件。)

在inittab文件中,每行包括4个以冒号分隔的字段,格式如下:
id : runlevels : action : process 比如 1:2345:respawn:/sbin/mingetty tty1
id为标识符,通常由1~2字符组成;runlevels表示运行级别,共7种;action表示执行的动作;process表示执行的进程。

运行级别(runlevels)包括如下几种:# 0 - 停机;# 1 - 单用户模式;# 2 - 多用户,没有 NFS;# 3 - 完全多用户模式(标准的运行级);# 4 – 系统保留的;# 5 – X11 (x window);# 6 - 重新启动。(Ubuntu与传统的linux有差别,它的运行级别有# 0 – 关闭系统;# 1 – 单用户模式;# 2~5 – 完整的多用户模式;# 6 – 重新启动)

执行动作(action)包括:initdefault - 指定默认的运行模式;sysinit - 指定运行的初始化脚本,默认为/etc/rc.d/rc.sysinit;respawn - 若指定的进程结束,则重新执行该进程;ctrlaltdel - 用户按下Ctrl+Alt+Del。

 

使用文本方式登录的用户可以通过startx命令启动图形界面:
startx [ [ client ] options ... ] [ -- [ server ] options .. ]
其中“--”用于分隔客户端参数与此同时服务器参数。startx命令通常不带参数运行。在图形界面下运行该命令会出现错误。

xset可以用来设置X-windows的各项参数。它的语法格式为:
xset [c][q][s][r][p][m][-dpms][+dpms][-display][led]

 

使用图形界面登录后可以使用虚拟终端进入终端工作方式。(其它使用终端的方式为:设置initab文件使系统启动直接进入命令行终端方式;远程登录进行终端。)

编辑命令行时的快捷键有:

移动光标的快捷键:Ctrl+f - 字符前移、Ctrl+b - 字符后移、Alt+f - 单词前移、Alt+b - 单词后移、Ctrl+a - 行起始、Ctrl+e - 行结尾、Ctrl+l - 清屏。

编辑的快捷键:Ctrl+d - 删除当前位、Backspace - 删除前一位、Ctrl+t - 调换当前字符与前一字符、Alt+t - 调换当前单词和前一单词、Alt+u - 把当前单词大写、Alt+l - 把当前单词小写、Alt+c - 把当前单词首字母大写、Alt+v - 插入特殊字符。

剪切和粘贴的快捷方式:Ctrl+k - 剪切至行末、Ctrl+u - 剪切至行首、Ctrl+w - 剪切前个单词、Alt+d - 剪切下一个单词、Ctrl+y - 粘贴最近剪切的文本、Alt+y - 粘贴先前的文本、Ctrl+c:删除整行。(Ubuntu虚拟终端下Alt+y和Ctrl+c命令不起作用)。

 

命令行利用tab键可以自动补全。如果当前文本可以确定一个唯一的匹配项,则一次tab就可以补全该项;否则连续两次tab可以显示所有可能匹配的项。可以补全的种类包括:

以$开头的文本以当前Shell的环境变量补全;

以~开头的文本以用户名补全;

常规字符开头的文本以命令、别名或函数名来补全;

以@开头的文本以/etc/hosts/文件中的主机名来补全(Ubuntu上貌似不支持)。

 

退出Linux的命令包括:

关机或重新启动 —— shutdown [-akrhfnc] [-t secs] [time] [warning message]

关闭系统 —— halt [-n] [-w] [-d] [-f] [-i] [-p];(halt命令相当于shutdown -h now)

重新启动系统 —— reboot [-n] [-w] [-d] [-f] [-i] [p];(reboot命令相当于shutdown -r now)

退出Shell -- exit;(等同于Ctrl+D)

注销用户 -- logout;(虚拟终端不能使用logout,而只能使用exit)

 

man命令可以查看Linux的帮助手册:
man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] [name]

man手册的存储位置定义在/etc/man.config文件里(在ubuntu里是/etc/manpath.config)。一般按类型存放 在/usr/share/man目录里。手册根据类型分为man1~man9共九个章节,比如/usr/share/man/man1。在各章节目录下包 含着.gz格式的手册文件,它的命名规则为“手册名称.章节.gz”。要查看特定章节的手册信息,可以使用命令“man N [name]”,其中N取值范围为1~9。

可以使用重定向把man的信息输出到一个文件中:man [name] > [filename]

 

其它的联机帮助命令有:

基于字符串查找whatis数据库 -- apropos;(等同于man -k。apropos以“name - description”的格式输出所有名称或描述与关键字匹配的命令)

显示内建命令的帮助信息 -- help [-s] [pattern..]; (-s表示只显示命令的格式信息,pattern是要查询的内容。该命令同样显示多个以pattern开头的命令。[command] --help同样可以得到命令的帮助信息。)

查看info格式帮助信息 -- info   [-apropos=STRING] [--directory=DIR] [--dribble=FILENAME] [--file=FILENAME] [--help] [--index-search=STRING] [--node=NODENAME]  [--output=FILENAME] [--raw-escapes] [--no-raw-escapes] [--restore=FILENAME] [--show-options, --usage] [--subnodes] [--vi-keys] [--version] [--where, --location];(info文档是比man手册有更强的交互性的另一种格式的帮助信息,通常存放在/usr/share/info目录中。pinfo命令同样可以查看info文档,其采用Lynx浏览器风格,支持鼠标功能。)

查询文件存储位置 -- whereis [-s] [-b] [-m] [-S dir] [-M dir] [] [-f] [name];(查找一个命令的二进制文件、源文件或帮助文件在系统中的位置)

查找简洁的帮助信息 -- whatis [keyword]。(在使用whatis命令之前需要用makewhatis命令建立whatis数据库,只有系统管理员才能建立)

 

第3章 系统管理与设置

3.1常用的信息显示命令

arch:显示主机的体系结构,等同于uname -m,可输出i386、i486、arm等。

cal:显示日历。

cat /proc/meminfo:查看内存使用情况。/proc目录下的文件通常用来帮助查看内核运行信息,系统关闭后,该目录的文件不再存在。

cat /proc/modules:查看当前系统模块。

cat /proc/version:查看当前系统版本。

cat /proc/partitions:查看当前系统分区。

cat /etc/issue:显示当前系统的发行版本。

cat /proc/cpuinfo:显示CPU信息。

cat /proc/interrupts:显示中断信息。

cat /proc/filesystems:显示文件系统信息。

date:显示或设置系统时间。

dmesg:显示启动信息。检测和控制内核的缓存,通常用来显示输出系统最后一次启动时的内核内部缓存信息。

echo:显示文本行。(echo -e支持转义字符)

free:显示内存信息。(free -s 2 -c 3表示每隔2s刷新一次内存,共刷新3次)

fgconsole:显示活动的虚拟终端数目。

fuser:用文件或套接口识别进程。(fuser -l显示信号,fuser -a /root显示与/root目录相关的进程,fuser -k /root杀死所有与/root目录相关的进程)

gdialog:从Shell创建对话框。(例:gdialog --title "hello" --yesno "this is content")

history:显示历史指令。(保留最近执行的命令记录,默认可以保留500个。history 5表示显示最近执行的5个命令。history -c清空历史记录。重新执行已执行的命令可以使用“!<命令事件号>”)

hostname:显示或设置当前系统的主机名。(-s显示短主机名;-a显示主机别名;-i显示主机IP;-d显示主机域名;--yp显示NIS/YP域名;hostname somename设置主机名)

hash:显示、添加或清除哈希表。(-l显示哈希表;-r清除表;-p<path><name>增加内容;-t<command>显示指定命令的完整路径)

hwclock:显示和设置硬件时钟。(hwclock -utc显示utc时间)

ipcs:显示IPC设备信息。(对进程通信进行描述。-p显示PID信息;-t时间信息;-m共享内存信息;-c创建者信息)

isosize:显示输出iso9660文件系统的大小。(光驱设备属于iso9660文件系统,isosize /dev/cdrom显示文件大小。isosize -d 1024 /dev/cdrom以大小为1024的块来显示光驱设备的大小。-x以易读方式显示大小。)

jobs:显示后台执行的作业。(命令后接&会以后台方式运行该命令。-l列出作业的详细信息;-p列出作业ID,-s列出停止执行的作业。)

lsmod:显示所有已加载的模块。

locale:显示当前系统的语言设置。(-a输出所有可用的语言名称;-m输出所有可用的字符集)

mesg:显示信息。(y允许用户通过write命令发送信息到当前终端;n禁止发送)

minfo:显示ms-dos文件系统的各项参数。(包括扇区数、磁头数、柱面数等。minfo -v C: 除显示文件系统的各项参数外,以十六进制显示C盘扇区内容。)

modinfo:显示内核模块信息。(modinfo modname)

mev:监视鼠标情况。

pstree:以树状图显示程序。(默认以init进程为根。pid可指定某一进程为根;-p可显示进程及进程号;-h高亮当前正在执行的进程。)

pwd:显示当前目录。

proc文件系统:查看系统内核信息。(proc不是真实的文件系统,不占用外存,只是以文件的方式为访问Linux内核数据提供接口。ls /proc可查看)

ps:报告程序状况。(-e查看当前所有进程;-u root查看以root身份运行的进程;-u root N查看非root身份运行的进程;-o pid,tt,user,fname,f,tmout,wchan以指定的排序方式显示;a显示所有进程,包括其他用户的进程;x显示没有控制终端的所有 进程;-C command显示与command进程相关的进程号,进程及其子进程)

pmap:显示程序的内存信息。(pmap pid)

procinfo:显示系统状态信息。

runlevel:显示系统运行级别。(输出前一个和当前的运行级别。如果没有记录上次系统的运行等级,则用N表示。运行级别说明:0-关闭系统;1-单用户模式;2-多用户模式,但不支持NFS;3-完全的多用户模式;4-保留;5-图形用户模式;6-重新启动。)

sysctl:设置系统核心参数。(-a显示当前所有的设置;-w<varible=key>设置参数。)

stat:显示文件/文件系统的详细信息。(例:stat /dev/sda)

top:显示进程信息。(q键退出)

time:执行命令并显示该进程执行的时间。(例time ls)

tload:显示系统负载。

uptime:显示系统的运行信息。(18:28:00 up 1 day,  6:58,  7 users,  load average: 0.07, 0.07, 0.12表示当前时间为18:28,系统运行1天6小时58分,有7个用户登陆系统,过去一分钟内的平均负载为0.07,过支5分钟内的平均负载为 0.07,过去15分钟内的平均负载为0.12。)

uname:显示操作系统信息。(-a显示当前主机所有软硬件信息)

vmstat:显示虚拟内存的统计信息。

yes:连续输出给定的字符串。(yes | rm -i *命令可以自动回答rm命令提出的问题)

3.2 常用的系统管理命令

apm:高级电源管理。(ubuntu显示No APM support in kernel)

apmd:高级电源管理守护进程。

apmsleep:设置挂起、待机及唤醒。(apmsleep -s +1:50挂机1小时50分钟后被唤醒。apmsleep -s 8:00挂机直到早上8点被唤醒)

bg:将程序放在后台执行。(例:sudo find / -name *.txt,之后用ctrl+z中止,显示"[2]+  已停止 sudo find / -name *.txt",再执行bg 2可把这个程序放在后台执行。)

chsh:改变登录系统时的Shell。(默认为/bin/bash。)

clear:清除终端屏幕。

depmod:检查模块依赖关系。(--show显示输出模块之间的依赖关系。)

exec:执行完命令后,交出控制权。(虚拟终端上运行该exec会在执行完命令后退出终端。)

fc:修改并执行命令。(-l类似于history。fc 2 4:把命令号为2、3、4的命令在vi中编辑,编辑完成后执行这些命令。)

fg:把后台任务放到前台。(vi &,再通过jobs可以查看后台任务,显示“[1]+  已停止 vi”。执行fg 1可以把vi放到前台执行。)

gcov:coverage测试工具。(gcc sorcefile.c -o executable -ftest-coverage -fprofile-arcs可以生成一个.gcno文件,再运行executalbe,之后便可以用gcov命令查看运行情况。-b查看程序的分支情 况,-f查看函数的使用情况。)

init:所有进程的父进程。(init 数字可以切换运行等级。比如init 0为关机;init 6是重启。init有一个链接命令telinit。)

ipcrm:删除消息队列、信号量或共享内存的ID。(ipcs显示IPC相关信息,ipcrm -m 32768删除进程32768的共享内存;-q删除消息队列;-s删除信号量。不带参数删除所有。)

kill:杀死进程。(-l参数显示所有可以使用的信号。kill -s 信号 进程号:向进程发送指定信号,不指定时的默认信号为SIGHUP。-s SIGKILL强制杀死进程,可能导致某些资源没有正确释放。信号可以直接作为参数,如kill -KILL或kill -9。)

killall:杀死同名的所有进程。(-l显示所有可用的信号。killall -s signal 进程名:向所有同名进程发送信号。默认信号为SIGTERM。信号也可以直接作为参数。)

logrotate:处理log文件。(替换、压缩、删除或通过邮件发送系统日志。logrotate /etc/logrotate.conf指定配置文件。)

mtools:软盘操作命令集。(mtools显示所有支持的软盘命令,为相应的MS-DOS命令前加“m”,如"mdir a:"。)

nice:设定进程优先级。(nice -N 命令。如nice -15 vim。N取值范围为-20~19。-20是最高等级,19是最低等级。超过19的值被视为19;小于-20的值被视为-20。系统默认等级为0。未指定优先级的nice命令默认等级为10。)

nohup:退出系统继续执行命令。(虚拟终端运行nohup command &会运行命令,并显示nohup: 忽略输入并把输出追加到"nohup.out"。)

ntsysv:设置系统的各种服务。(显示图形界面。ubuntu上找不到该命令。)

open:开启虚拟终端。(open -s -c 6 -- ls -al在虚拟终端6执行ls -al命令,同时切换到虚拟终端6。-s执行命令时,切换到新的虚拟终端。-w等待命令结束。如果-w与-s合用,在命令结束后切换加原来的终端。)

pgrep:查找符合条件的进程。(-u root查找由root用户创建的进程,-l同时列出进程名称和ID。-v搜索不符合条件的进程。-P pid列出父进程为指定进程的所有进程。)

pidof:显示当前正在运行程序的进程ID。(例pidof vi。-o omitpid忽略进程号为omitpid的进程。-s返回首次匹配。)

pkill:杀死进程。(ps各kill的结合,在当前所有进程中查找符合条件的进程,然后发送相应信号。pkill -t tty8杀死终端8的所有进程。-u root杀死root的进程。pkill -9 vim杀死vim。)

pwck:检查密码文件。(例:pwck /etc/passwd;pwck /etc/shadow。-r只读模式。)

rlogin:远端登录。(先在远端主机上运行chkconfig rlogin on开启rlogin服务,ubuntu上找不到该服务。之后使用rlogin 192.168.20.122 -l username来登录该远端主机。)

renice:对进程优先级进程调整。(renice N 进程号,或-u 用户名,或-g 用户组。与nice不同,N前不需要“-”。)

rmmod:删除模块。(lsmod显示系统已安装的模块。-a删除所有没有使用的模块。-v显示运行时的详细信息。)

rsh:远端登录的Shell。(远端主机chkconfig rsh on。例:rsh -l yang 192.168.20.122 /bin/ls。ubuntu上rsh为unknown service。)

screen:多重视窗管理程序。(在一个终端上模拟多个终端。 screen或ctrl+a+c创建一个新的screen。ctrl+a进行screen的切换。screen -ls显示所有screen列表。-d让指定的screen离线。-r恢复指定的作业。unbuntu的虚拟终端好像只能创建一个screen。)

sleep:休眠。(s秒,m分,h小时,d天。虚拟终端上表示为其自身暂停。)

sudo:以其他身份来执行命令。(-L列出可以使用的参数。-u username使用指定身份执行命令。)

suspend:暂停执行Shell。(直到收到SIGCONT信号为止。-f表示强制暂停。)

symlinks:管理和维护符号链接。(symlinks -v /:列出根目录下所有的符号链接。-c将绝对路径的链接转化为相对路径;-d删除失效的链接(dangling);-r递归检查子目录;-t与-c合用时,对换进行检测,但不进行实际的转换。)

vlock:锁定终端。

wait:等待程序返回状态。(例:wait pid。)

watch:重复执行命令并将结果输出。(watch -n 10 ls每隔10秒运行一次ls命令。)

&:将任务放到后台执行。(例:vi &。)

3.3 常用的系统维护命令

alias:设置命令的别名。(alias列出已有的别名。-p以“name=value”的形式列出别名。alias name=value设置别名。)

aumix:设置音效设备。(图形界面。ubuntu上运行:aumix:打开混音器时发生错误: 没有那个文件或目录。)

authconfig:配置系统的认证资源。(图形界面。对NIS、/etc/passwd、/etc/shadow、LDAP、Kerberos5以及SMB等资源认证进行配置。-back将“取消”按钮更改为“返回”按钮。ubuntu:authconfig:找不到命令)

bind:显示或设置按键组合。(-l列出所有功能函数的名称。-p列出所有功能函数及其绑定。-q function查询指定功能的按键或按键组合。)

chkconfig:设置和检查系统的服务设置。(--list列出所有服务设置状态。chkconfig telnet on开启telnet服务。chkconfig telnet off关闭telnet服务。)

declare:显示或设置Shell变量。(-p显示每一变量的名称和属性值。-x显示环境变量;-f显示函数名称;-r只读模式。)

dircolors:设置ls命令显示的颜色。(-p显示默认值。-b显示Bourne Shell颜色代码设置;-c显示C Shell颜色代码设置。)

enable:开动或关闭Shell内置命令。(-a显示所有内置命令;-p显示已加载的命令列表;enable name指定加载的命令。enable -n name关闭指定的命令。)

eval:连续执行多个命令。(例:eval ls; free; ps)

export:设置或显示环境变量。(-p显示所有环境变量。export name=value设置;-n删除。)

false:返回值为失败。(例:ls后,echo $?显示0,表示无错误。false后,echo $?显示1,表示失败。)

fbset:显示或设置帧缓存。(fbset -g 800 600 1024 768设置画面分辨率800x600、桌面分辨率1024x768。-accel true启动硬件加速。-bcast true启动广播功能。-test测试。)

hostid:显示出当前主机的数字标识。

insmod:载入模块。

ldcondifg:配置动态链接绑定。(-v建立共享库的正确链接,更新缓冲区,并显示相关信息。-n dir只对特定目录更新。)

ldd:显示共享库文件的相互信赖关系。(显示指定的程序或库文件所使用的共享库。-v显示所有信息。)

lilo:安装启动装载程序。

losetup:设置和控制循环设备。(例:losetup /dev/loop0。)

mkraid:初始化或升级raid。(将一组块设备设置为一个raid设备阵列。适合所有raid类型,包括RAID1、RAID4、RAID5、线性和RAID0。例:mkraid -f /dev/sda1+/dev/fd0。)

modprobe:自动处理可载入模块。(根据模块内的依赖关系自动安装所有依赖的模块。-c显示当前默认设置。例:modprobe -v 8139too安装网卡8139too。)

mouseconfig:设置鼠标相关参数。(redhat linux下的鼠标配置工具,ubuntu不支持。--text图形界面方式;--noui genericusb以命令形式指定鼠标类型为genericusb。--device psaux指定鼠标所在的端口为PS/2。)

resize:设置终端视窗的大小。(resize查看视窗大小。-s 30 100设置大小为30行,每行100字符。-c采用C shell命令;-u采用Bourne Shell命令。)

rmp:管理rpm包。(-i安装;-q查询;-e卸载。)

setserial:设置或显示串口的信息。(例:setserial -v /dev/ttyS1显示串口/dev/ttyS1的信息。-a显示详细配置信息。)

setup:设置公用程序。(设置认证、防火墙、鼠标、网络配置、打印机配置、系统服务、时区配置等公用程序。ubuntu不支持。)

swapoff:卸载交换区(swap area)。(fdisk -l显示系统分区信息,/dev/sda3可能是一个交换分区。swapoff /dev/sda3卸载该交换分区。)

swapon:加载交换区。(swapon /dev/sda3加载交换分区。swapon -s /dev/sda3显示交换分区信息。)

set:设置Shell执行方式。(-f禁止使用通配符。+f添加通配符设置。例:set SHELL "/bin/sh"。)

telinit:设置系统运行等级。(/sbin/init的链接。)

true:返回值为成功。(与false相反。)

ulimit:控制Shell及进程的资源。(-a显示资源配置。-u 500设置单用户创建进程上限为500;-n 1000同一时间允许打开的文件数目最多为1000;-v 1024最大虚拟内存为1M。)

unalias:取消指定的别名。

unset:删除变量或函数。

up2date:升级red hat linux系统。(ubuntu不支持。)

3.4 自动作业处理

crontab:设置定时执行。(首先确保有crond守护进程运 行,用service crond start或service crond stop来开启或关闭crond进程。ubuntu上是cron。该进程运行后,可以编辑/etc/crontab文件来设置自动作业。可以看到文件组织 格式为“m h dom mon dow user  command”,分别表示“分、小时、日期、月、星期、用户、命令”。例:17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly表示每小时的第17分钟以root身份运行cd / && ... hourly的命令。另*/1 *   * * *   root    echo tommy crontab~~表示每隔1分钟以root身份执行echo,默认情况会以邮件的方式发给root,通过cat /etc/mail/root可以查看。可以使用重定向“echo tommy crontab~~ >> /home/tommy/tmp/record”把输出转到一个文件中。)

anacron:任务高度守护进程。(与cron类似,区别在于 cron任务如果在指定时间没能完成,则调度工作就会失败,而anacron没能成功执行后会间隔一段时间后再次执行该任务。需要通过service anacron start启动守护进程。编辑/etc/anacrontab命令可以设置调度任务。文件格式为:时间间隔、等待时间、任务标识、命令。例:1 65 cron.daily run-parts /etc/cron.daily。)

at:系统将执行的任务排队。(把任务放到队列中,按时执行,与 crond的区别是它只执行一次。例:at 21:55<回车> ls -al / /myshare/at_test<回车> <Ctrl+d>在21:55时执行。at now +5 min在5分钟后执行。at 3pm tomorrow在明天下午3点执行。at 8am+3days在三天后早上8点执行。at -l查询已经设置的任务。at -c 6显示已经设置的任务6的内容。所有的任务都存储在/var/spool/at目录中。)

atd:执行已经排队的任务。(at的任务要执行的话,必须要有一个atd的守护进程运行。-d输出调试信息。-s只执行已排队的任务一次。)

atq:检查排队的任务。

atrm:删除已经排队的任务。

atrun:执行已排队的任务。(本质为一个Shell脚本,等价于atd -s。)

batch:批处理。(与at一样,batch也使用atd守护进 程执行,命令格式也相同。不同在于batch在系统平均负载低于一个特定值时才会运行,默认为0.8。例:batch<回车> ls <回车> echo "hello" <回车> <Ctrl+d>。)

3.5 系统日志

syslogd:启动syslog日志进程。(-r招收来自网络的syslog信息。修改配置文件后,用killall -HUP syslogd来重启syslog进程。)

syslog.conf:系统日志配置文件。(/etc /syslog.conf,格式为[消息来源.消息级别] <Tab> [动作]。例:mail.*  /var/log/maillog将所有与电子邮件相关的信息保存到mailog文件中。kern.emerg  *把内核恐慌消息发送给所有登录的用户。)

logger:测试syslog.conf。(logger -p [消息] [消息内容]。例:logger -p kern.emerg "Just test"。)

echo > 日志文件:清空日志。(如果创建日志文件的服务正在运行,必须停止服务,才能删除日志。利用echo命令,不必停止日志服务。例:echo > /usr/local/apache/logs/error_log。)


第4章 用户和用户组管理

4.1 普通用户的管理

/etc/passwd文件:存储用户的相关信息。(包括用户名、 字码、主目录位置等。可以用vipw命令编辑/etc/passwd文件。vipw类似于vi,但在编辑文件时对文件加锁,编辑结束后解锁。文件格式 为:Username:encrypted password:UID:GID:full name:home directory:login shell。例:root:x:0:0:root:/root:/bin/bash。因为linux2.0以上版本因为安全性,把密码与用户基本信息分开 存储,所以在存放密码的位置为“x”标识。真正的密码在/etc/shadow文件中。用户标识号UID为整数,取值范围为0~65535。0~439一 般由系统保留,其中“0”为根用户。用户组标识号GID也为整数,0~439被系统保留,用户组的具体定义在/etc/group文件。个人信息描述 full name记录用户的真实姓名、电话、地址、邮编等信息,各项之间用“,”分隔,该字段可以为空。登录目录home directory是用户登录系统后的默认目录,通常就是用户的主目录,一般在/home下。根用户的登录目录为/root。登录Shell是用户以文本 方式登录系统后启动的Shell进程,常用的包括sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX/TOPS-20 type C Shell)、bash(Bourne Again Shell)等。)

/etc/shadow文件:存储用户密码。(passwd文件可 被普通用户访问,而shadow文件只能被根用户访问。文件格式为:Username:Encrypted password:Number of days:Minimum password life:Maximum password life:Warning period:Disable account:Account expiration:Reserved,分别表示用户名、密码、从1970年到上次修改密码的天数、密码必须连续使用的天数、密码有效期、密码失效前告 警的天数、从密码过期到彻底停用的天数、账号失效日期、保留字段。例:daemon:*:15089:0:99999:7:::。密码由 MD5(Message Digest v5)算法加密。)

pwconv:创建影子文件。(把/etc/passwd中的密码转换为“x”,同时创建影子文件/etc/shadow保存密码。)

pwunconv:从影子文件恢复密文。(与pwconv相反,把/etc/shadow中的密码加入到/etc/passwd文件中,并删除/etc/shadow文件。)

useradd:添加新用户。(adduser是useradd的 一个链接。-c comment:用户的注释说明;-d home_dir:登录目录;-e expire_date:帐号失效日期;-f inactive_days:帐号过期到永久停用的天数,值为0时表示帐号到期后立即停用,系统默认值为-1,表示账号不会被停用;-g initial_group:用户默认的用户组或默认用户组ID,必须是已经存在的,默认值为100,表示users组;-G group:设定该用户为若干用户组的成员,每个用户组之间用“,”分隔,且不可夹杂空格;-m:用户目录如不存在则自动建立;-k:把目录 skeleton_dir和/etc/skel的文档复制到用户目录中,默认下-m和-k都不被启用;-M:不建立用户主目录,使用/etc /login.defs系统文件对用户进行设定;-n:系统默认用户组名称与用户名称相同;-r:建立系统帐号,即比定义在/etc /logins.defs中的UID_MIN小的值,UID_MIN的默认值是500,-r不会创建用户主目录,除非指定-m参数;-sehll default_shell:指定用户的登录Shell,默认为/bin/bash;-u uid:用户UID;-D:单独使用时显示当前默认值,与其它选项一起使用表示在默认设置的基础上重新设定默认值。)

usermod:修改用户的帐号。(支持useradd命令的选项,如-c、-d、-e、-f、-g、-G、-s、-u,此外还支持-l login_name:变更用户登录时的名称。)

userdel:删除用户。(删除用户在系统的账户信息。-r删除 用户主目录下的文档,不指定该选项则保留主目录。删除用户前,应该等待该用户的进程执行完毕,或用ps -aux | grep "username"终止。此外还应查看是否有该用户的定时任务,用命令crontab -u username -r。)

passwd:修改用户密码。(-k:只有密码过期才需要用户设定 密码。-l:通过在用户的密码字段加前缀“!”,对用户进行锁定。锁定的用户无法登录系统。--stdin:从标准输入重新读入密码。-u:与-l相反, 删除密码字段前的“!”对锁定的用户进行解锁,口令为空的用户原则上是不允许解锁的,配合-f可强制解锁;-d:快速删除用户的密码。-n mindays:设定最短的密码有效期。-x maxdays:设定最长的密码有效期。-w:密码过期前,提前发出警报的天数。-i inactivedays:密码过期到帐号停用的天数。-S:显示指定用户当前密码状态。passwd单独使用时改变当前用户的密码。根用户可以用 passwd username修改其他用户的密码。)

newusers:批量创建用户。(首先建立一个用户信息文件,格式与/etc/passwd相同,之后用命令newusers < filename来添加文件中定义的用户。如果不使用管道方式“<”,可以在标准输入中输入各行,以ctrl+d表示结束。)

chpasswd:批量创建用户密码。(与newusers类似,从文件中导入密码信息,文件格式为username:password。)

chage:查看帐户密码的有效期。(例:chage -l username。)

4.2 根用户的管理

su:变更用户身份。(例:su username。不输入用户名时,默认的用户为root。)

chroot:改变根目录。(对进程建立新的虚拟根目录“/“,通常保护真正的根目录。chroot newroot [command]。例:创建目录/tmp/empty,把ls链接到该目录,再运行chroot /tmp/empty /ls -Rl /。)

4.3 用户组的管理

/etc/group文件:存储组信息。(文件格式:用户组:加密密码:GID:组成员列表。密码用“x”代替。)

/etc/gshadow文件:存储组密码。(文件格式:用户组名称:加密密码:管理员帐号:组成员列表。管理员可以对该组进行增、删、改等操作。)

groupadd:添加新用户组。(命令格式:groupadd [-g GID [-o]] [-r] [-f] [-K KEY=VALUE] groupname。-g GID:用户组id;-r:创建小于500的系统组,若不指定-g,则按递减顺序从小于500的可用值中挑选;-f:如果所定义的组已存在,则退出并显示 成功信息,若-g和-f合用,且-g指定的组已存在,则-g指定的组被忽略且新的group会分配另一个id值;-o允许指定不唯一的GID;-K KEY=VALUE:重载/etc/login.defs中的默认值,例如设置GID_MIN;groupname:用户组名称。)

groupmod:修改用户组属性。(-g GID;-n new groupname。例:groupmod -g 503 -n yourgroup mygroup。)

groupdel:删除用户组。(必须等待该用户组的所有用户退出系统才能正常删除。)

newgrp:切换所属用户组。(一个用户同时可以属于多个用户组,但用户登录系统后,默认只属于一个用户组,newgrp可以使用户在多个用户组之间进行切换。语法:newgrp [-] [groupname]。“-”用于重新加载用户工作环境,否则工作环境不改变。)

4.4 用户和用户组管理的安全防范措施

ac:统计用户连接时间。(ac查看系统总的连接时间。ac -p按用户进行统计。ac -d按天对连接进行汇总。)

last:查询最近的使用者登录时间。(例:last -n 10仅显示10行记录。)

lastb:显示最近登录系统失败的用户信息。

who:查询当前系统中登录的用户。(-H显示标题栏;-i显示空闲时间字段;-T显示用户状态;-m显示使用当前标准输入设备的用户;-q显示所有登录的用户名以及登录用户的数目;-p显示由init进程创建的活动进程。)

w:查看登录用户及其进行的操作。(-f显示登录用户信息,但不显示登录位置。-s以精简模式显示登录用户信息;-h不显示标题栏;w root只查询root用户的信息。)

4.5 其他用户和用户组管理的常用命令

finger:查找并显示用户信息。(finger -l显示用户信息。finger username显示特定用户的信息。)

groups:显示指定用户所属的用户组。(groups显示当前用户所属的用户组。groups username显示特定用户的用户组。)

id:显示用户的UID、GID。(id显示当前用户的UID、 GID、和用户所属的组列表。id username显示特定用户的相应信息。-g显示当前组ID;-G显示用户所属的所有组ID;-u显示用户ID;-n显示名称而非数字;-r显示真实用 户ID而非有效用户ID。)

logname:显示登录用户的用户名。

rwho:查看登录本地的用户信息。(与who类似,但可以显示局域网中多台主机的用户登录信息。当rwho命令在11分钟内没有收到主机的反馈信息,则会认为主机已关闭,也不会报告已知的登录用户。除非使用-a选项,否则忽略1小时内没有操作的用户。)

users:显示当前登录的用户。

write:将信息实时传递给登录的用户或终端。(例:write username<回车>this is message<回车><ctrl+d>。)

whoami:显示当前用户信息。

4.6 用户及用户组管理命令的综合应用

/etc/nologin文件:引起普通用户无法登录的问题。

(通过touch /etc/nologin命令可以建立该文件。删除该文件可以解决普通用户不能登录的问题。

ssh不查看/etc/nologin文件,所以即使该文件存在,使用ssh仍可以登录系统。)

第5章 磁盘管理

5.1 Linux磁盘分区工具

硬盘可以分成若干个分区,每个分区可视为独立的磁盘来使用。硬盘的分区方案被记录到“磁盘分区表”中,通常该表由4个部分组成,每个部分定义一个分 区的信息,因此原始概念中一个硬盘最多只能建立4个分区,称为“主分区”。由于硬盘越来越大,4个分区已不无法满足用户的需要,为此引入“扩展分区”的概 念。扩展分区由扩展磁盘分区表维护,可以把某个主分区作为扩展分区划分为若干更小的“逻辑分区”。理论上,硬盘空间足够时,可以建立任意数量的分区。

Linux上建议的分区有:swap分区,即虚拟内存;boot分区,存放操作系统的内核;根分区,整个操作系统的根目录;/var分区,可以避免日志文件的大小失控;/home分区,控制用户占用的空间大小。

磁盘分区工具有:

fdisk:强大的磁盘分区工具,不仅适合于Linux,在 Windows及MS-DOS中也有广泛应用。-l显示当前设备的分区表。-s /dev/sda1显示指定分区的大小。-s /dev/sda显示设备所有分区大小的总和。-v显示fdisk的版本号。fdisk /dev/sda可以进入命令交互模式,内部命令包括m:显示命令帮助;p:显示当前分区表;q:退出;等等。)

parted:Linux下的磁盘分区与分区调整工具。parted /dev/sda可进入交互模式。

sfdisk:-l显示分区信息。-s显示磁盘或分区大小。

5.2 常用的磁盘管理命令

badblocks:检查设备坏块。(-s 显示检查进度。)

du:统计文件和目录占用的磁盘空间。(如果没有指定文件或目录名,则默认对当前目录进行统计。-s仅显示文件 或目录占用的块数,默认一块等于1024字节。-b以字节为单位进行统计;-k以1024字节为单位;-m以1024K为单位;-c同时显示总计;-h按 需显示K、M或G。-a显示所有文件及其子目录占用的数据块数。例:du ~tommy,统计tommy的主目录。)

df:显示文件系统磁盘空间使用情况。(不指定文件系统的话,则显示所有当前挂载的文件系统的可用空间。默认情 况下空间以1KB为单位进行显示,除非环境变量POSIXLY_CORRECT被指定,此时以512字节为单位。-i以inode模式显示,列出的都为 inode数量;-h以可读方式显示,按需显示K、M或G;-t type只显示指定文件系统的信息,如df -t ext3;-x type与-t相反,不显示指定的磁盘类型的磁盘。)

fdformat:格式化磁盘。(-n表示格式化完成后不进行验证。)

hdparam:显示和设定硬盘参数。(-C显示电源管理,-d 1开启DMA模式。例:hdparm /dev/sda1。)

mkfs:设置磁盘的文件系统。(例:mkfs -t ext4 /dev/sda2。)

mkswap:设置交换分区(swap area)。(例:mkswap /dev/hda4,将hda4指定为一个新式的交换分区。-c在创建交换分区前检查坏块;-v0建立一个旧式的交换区,-v1建立一个新式的交换区。)

mkisofs:建立ISO9660/JOLIET/HTS文件系统。(例:mkisofs -o myiso myfile把myfile制作为名为myiso的镜像文件。)

mkinitrd:创建ramdisk的镜像文件。(例:mkinitrd myfile.img 2.2.5-15建立名为myfile.img、内核号为2.2.5-15的镜像文件。ubuntu上不支持。)

mt:磁带驱动操作。(语法:mt operation device。操作有rewind、erase等。rmt命令是远端磁带传输协议模块,可以通过进程间通信,远程控制磁带机进行备份、恢复备份操作。)

mzip:弹出Zip/Jaz设备中的磁盘。(-e弹出磁盘;-f与-e同时使用强制弹出;-q查询状态。)

sync:将缓冲区内的数据写入磁盘。(在卸载移动硬盘前,可用sync把内存数据写入磁盘。)

rsync:远程同步。(例:rsync -av -e ssh /home/share/*.doc root@teacher.example.com:/usr/local/share通过ssh把/home/share下的所有doc文件备份到了 teacher主机的/usr/local/share目录下。只同步修改过的文件和目录。-a:归档模式;-v:冗余模式。)

5.3 磁盘配额管理

/etc/fstab文件:定义分区的挂载方式。(文件格式 为:<file system> <mount point>   <type>  <options>       <dump>  <pass>。例:/dev/sda1 / ext4 errors=remount-ro,user_xattr 0 1。要启用磁盘配额管理,则需要添加usrquota和grpquota选项,例:/dev/sda2 /mnt/disk ext4 defaults,usrquota,grpquota 0 1。更改该文件后,需要reboot或者重新挂载使得配置文件生效:mount -o remount /dev/sda2。注意,当新的分区建立后,需要使用mkfs指定该分区的文件类型,否则挂载时会出现找不到文件系统的错误。)

quotacheck:检查磁盘的使用空间与限制。(在修改 /etc/fstab文件并添加usrquota与grpquota选项后,可以使用命令quotacheck -avugc来创建aquota.user和aquota.group这两个文件,其中-c表示重新创建配额文件,-a扫描在/etc/mtab文件中所 有挂载的非NFS文件系统;-u计算每个用户占用的目录和文件数目,并创建aquota.user文件;-g计算每个用户组占用的目录和文件数目,并创建 aquota.group文件;-v显示命令执行过程。/etc/mtab与/etc/fstab内容类似,/etc/fstab表示系统开机时默认加载 的分区,而/etc/mtab表示目前系统加载中的分区。创建出来的aquota.user和aquota.group文件位于启用usrquota和 grpquota选项的分区所挂载的位置,如/mnt/disk。)

edquota:对用户或用户组设置磁盘配额。 (aquota.user和aquota.group文件太复杂,无法直接编辑,只能用edquotaa命令编辑。-u username设置用户的磁盘配额,-g groupname设置用户组的磁盘配额。默认情况下-u被使用。文件格式为:Filesystem blocks soft hard inodes soft hard,其中bolocks为用户已使用的空间,以块为单位,一块为1024字节,相应的inodes为已使用的i结点数。soft为软限制,当用户达 到此限制时,系统会发出警告信息,但用户仍然可以继续使用;hard为硬限制,到达此限制时用户就无法写入了。前面的soft、hard对应block的 软、硬限制,而后面的soft、hard对应inode的软、硬限制。-p复制配额设置,如edquota -p usr1 -u usr2 usr3;-t设置软时间限制。)

quota:显示磁盘已使用的空间与配额限制。(-u查看用户,为默认选项;-g查看用户组。)

quotaoff:关闭磁盘空间限制。(-a关闭所有在/etc/fstab列出的磁盘配额;-g用户组配额;-u用户配额;-p列出状态。)

quotaon:启动磁盘空间配额限制。(语法与quotaoff一样。)

quotastats:显示磁盘空间的限制。

repquota:对文件系统的磁盘配额情况进行统计。

5.4 逻辑卷管理(LVM)

LVM中相关的定义有:

物理卷(Physical volume,PV)相当于硬盘驱动器的一个标准主分区或逻辑分区;

物理盘区(Physical extent,PE)就是一块磁盘空间。物理卷被划分成多个同等大小的PE;

逻辑卷(Logical volume,LV)是LE的集合;

逻辑盘区(Logical extent,PE)和一个PE相对应,大小相同;

卷组(Volumn group,VG)是LV的集合。

pvdisplay:查看组成LVM卷的物理卷。

pvcreate:创建物理卷。(可以在硬盘上或其中某个分区上创建。)

vgcreate:创建卷组。(例:vgcreate myvolumn /dev/sdd1 /dev/sdc2。其中sdd1和sdc2都为物理卷。)

vgextend:在卷组里添加一个新的物理卷。(例:vgextend myvolumn /dev/sdd3。)

lvdisplay:查看逻辑卷。

lvcreate:创建一个逻辑卷。(例:lvcreate -l 50 myvolumn -n mylogical创建一个/dev/myvolumn/mylogical的新设备,可以用于挂载:mkfs -j /dev/myvolume/mylogical,mount -t ext3 /dev/myvolumn/mylogical /mnt/mynewdisk。-l 50表示大小为50个PE,每个PE大小可能为4.0M,而-L指定LV的size。-n指定LV的名字。)

lvextend:扩展逻辑卷。(如果有多余的PE,可以扩展逻辑卷的大小。例:lvextend -L 800M /dev/myvolumn/mylogical。)











本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1586761,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
ECS系统指南之Linux系统诊断
立即下载
Decian GNU/Linux安全合规之路
立即下载