目录
一、Linux 系统目录结构
1、目录结构
在我们平时生活中,操作系统用的最多的是Windows系统,如果你是土豪从小到大都是iPhone、Mac之类的电子产品,那你应该不会来做程序员吧(所以你就看不到这篇文章),在Windows系统下,系统的整个磁盘会被拆分为不同的磁盘分区,而且每个磁盘会分配一个不同的盘符,比如 C:\、D:\ 等等,每个磁盘分区都单独存放自己的文件,它们有自己的根目录,每个磁盘分区的起点就是它们的根目录,比如 C:\、D:\ 就相当于 C 盘和 D 盘的根目录了,如果想要找到一个文件,我们只要依次进入该文件所在的磁盘分区即可(这里假设是D盘),然后在进入该分区下的目录,最终找到这个文件。而Linux 操作系统也有目录的概念,只是Linux 和Windows 的磁盘管理有一点区别,Linux 是将整个磁盘进行统一的管理,不存在C:\、D:\ 等盘符,Linux整个系统只有一个根目录 "/",所有的文件和目录都是在这个根目录下,它表示 Linux 文件系统的起点,因为在Linux系统中一切都是文件,其中的目录、字符设备、光盘、打印机等都被抽象成了文件,所以平时和我们打交道的都是文件。
另外要注意一点,在Linux 中目录之间的间隔使用的是正斜线 (forward slash)"/",而 Windows中用的是反斜线 (back slash)"\"。
Linux系统在安装的时候系统会建立一些默认的目录,每个目录都有其特殊的功能,所以下面我们对 Linux 系统中的目录结构以及经常使用到的概念进行一个完整介绍。

下面来简单介绍一下这些目录的含义(红色标注为重点):
- /:根目录,文件的最顶端,是整个 Linux 文件系统的起点。
- /bin:bin是Binary的缩写, 用于存放系统中常用的命令,任何用户都有权限执行,例如:ls、mkdir、mv等等。
- /boot: 用于存放Linux启动时的一些核心文件,包括一些连接文件以及镜像文件,其中Linux 的内核就存放在这个目录中。
- /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,例如:硬盘、光驱、鼠标等设备文件,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc: 这个目录非常重要,用于存放系统和程序所需的配置文件,作用类似于 Windows 的注册表。
- /home:普通用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,比如 user1 的home目录是 /home/user1。
- /lib lib64:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。它们自己不能被执行,需要被其他的程序调用,几乎所有的应用程序都需要用到共享库。
- /media:用于挂在设备,linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了,例如增加一块硬盘,需要手动挂载。
- /opt:用于安装额外软件所用的目录,默认是空的。比如你安装一个Mysql数据库则就可以放到这个目录下。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /root:该目录为系统管理员,也就是超级权限者root用户的home目录。
- /run:用于存放进程产生的临时文件。当系统重启时,这个目录下的文件应该被删掉或清除。
- /sbin:s就是Super User的意思,存放的是系统管理员使用的系统管理程序。
- /srv:存放一些服务启动之后需要提取的数据。
- /sys:该目录下安装了内核中新出现的一个文件系统 sysfs,该文件系统是内核设备树的一个直观反映。
- /tmp:用来存放一些临时文件的,所有用户都可执行写操作。
- /usr:这是一个非常重要的目录,很多的应用程序和文件都默认放在这个目录下,类似于Windows下的Program Files目录。
- /usr/bin: 系统用户使用的应用程序。
- /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src: 内核源代码默认的放置目录。
- /usr/local :该目录下一般是你安装软件的目录,也相当于在Windows下的Program Files这个目录。
- /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志log文件。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
2、Linux的绝对路径与相对路径
文件的路径是用来帮助我们定位到某个文件的,一般文件的路径分为绝对路径和相对路径。
- 绝对路径:指的是从根目录(/)开始写起的文件或目录路径,也就是将目录用完整的路径表示出来。
- 相对路径:指的是相对于当前工作目录为起点来表示的文件路径。(注意:使用相对路径进入文件时最前面不加/)
简单举例:
1)、绝对路径
例如我们进入:/usr/local/bin 目录下。

2)、相对路径
我们首先回退到/usr/local目录,然后相对于这个目录进入/bin 目录。
或者
又或者直接使用绝对路径
两个特殊的目录:
- . :一个点代表当前的目录,也可以用 . / 来表示。
- . . :两个点代表上一层目录,也可以用 . . / 来表示。
注意:绝对路径和相对路径二者的使用完全看自己怎么选择,两者各有利弊,绝对路径可以在任何目录下进入其它任何目录中,可以保证他的路径是绝对正确的,但是如果目录文件很多则需敲一段很长的路径。而相对路径在有同名的目录下非常的方便,但是如果要在不同命的目录下进入到其它目录就很麻烦(不使用绝对路径的情况),首先得退到根目录,然后才能进入其它目录。
①、相对路径的用途:例如现在有三个目录分别为:
- /usr/local/packages/etc
- /usr/local/packages/bin
像这样的目录我们使用相对路径是非常方便的,如果我想从/usr/local/packages/etc目录进入到/usr/local/packages/bin目录,可以直接使用 cd ../bin ,这样非常的方便。
②、绝对路径的用途:绝对路径由于将路径全部完整的写出来了,所以是非常准确的。所以路径是写在 shell scripts 中的路径,那么最好使用绝对路径,虽然可能路径非常长,但是这种写法是绝对不会出错的。
二、Linux中的基本命令介绍(非常重要!!!)
这里注意一点:系统bin目录下和sbin目录下是存放“指令”对应的可“执行程序文件”目录,其中bin目录是所有用户都可以使用里面的命令,而sbin目录文件对应指令都是"root"用户可以执行的指令,普通用户不能使用该目录里的命令,所以普通用户和和root用户的开头是有区别的:
- root用户:用#开头
- 普通用户:用$开头
下面来介绍Linux中的基本命令。
1、用户与用户组管理
用户、用户组和其他人的基本概念:
- 用户:表示能够使用系统的用户。root也是用户的一种,只是它有着最高的权限。
- 用户组:表示用户的一个集合,不同组的用户对文件的权限是不一样的。
- 其他人:顾名思义,它是能够使用系统的用户,但是没有加入任何用户组。
(1)Linux里查看所有用户
linux里,并没有像windows的net user,net localgroup这些方便的命令来治理用户.
Xwindows界面的就不说了.
1)在终端里.其实只需要查看 /etc/passwd文件就行了.
2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户或者用cat /etc/passwd |cut -f 1 -d :
========================
(2)用户治理命令
1)、useradd:命令用于创建新的用户,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。。
语法格式为:useradd [选项] 用户名
常用选项:
- -d 指定用户的家目录(默认为/home/username)
- -e 账户的到期时间,格式为YYYY-MM-DD.
- -u 指定该用户的默认UID
- -g 指定一个初始的用户基本组(必须已存在),格式为:useradd –g 用户组 用户名
- -G 指定一个或多个扩展用户组
- -N 不创建与用户同名的基本用户组
- -s 指定该用户的默认Shell解释器
简单举例:

在上面的命令中,表示创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器。这里注意/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中。
然后用 id username 命令来查看用户的信息:

2)、passwd:用于修改用户密码、过期时间、认证信息等(root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便)。
语法格式为:passwd [选项] [用户名]
常用选项:
- -l 锁定用户,禁止其登录
- -u 解除锁定,允许用户登录
- -d 使该用户可用空密码登录系统
- -e 强制用户在下次登录时修改密码
- -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
简单举例:


3)、groupadd:命令用于创建用户组。
语法格式为:groupadd [选项] 群组名
常用选项:
- -g 指定新用户组的组标识号(GID)。格式:groupadd -g 101 group
- -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
创建用户组的步骤非常简单,例如使用如下命令创建一个用户组linuxgroup,简单举例:
![]()
4)、groupdel:用于删除创建的用户组。格式:groupdel 用户组名
5)、groupmod:用于修改用户组。
语法格式为:groupmod [选项] 用户组名
常用选项:
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n 新用户组 将用户组的名字改为新名字
简单实例(就不实际运行了):groupmod –g 10000 –n group3 group2
6)、usermod:命令用于修改用户的属性。
语法格式为:usermod [选项] 用户名
常用选项:
- -c 填写用户账户的备注信息
- -d –m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
- -e 账户的到期时间,格式为YYYY-MM-DD
- -g 修改用户所属的用户组id,即gid
- -G 修改用户所属的用户组,即把用户追加到某些组中
- -L 锁定用户禁止其登录系统
- -U 解锁用户,允许其登录系统
- -s 变更默认终端
- -u 修改用户的UID
简单举例:
--将用户zhangsan加入到root用户组中,这样扩展组列表中则会出现root用户组的字样,而基本组不会受到影响:

--修改用户zhangsan的用户UID值:

7)、userdel:用于删除用户。
语法格式为:userdel [选项] 用户名
常用选项:
- -f 强制删除用户
- -r 同时删除用户及用户家目录

注意:一般在实际的删除用户时,都不会删除用户的home目录。
(3)其他用户管理命令
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,假如/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。
————————————————
2、文件的基本属性和权限
在Linux系统中一切都是文件,但是每个文件的类型不尽相同,而且每个文件的访问权限也不相同,因此Linux系统使用了不同的字符来加以区分文件的类型访问权限,如下所示。
我们查看跟目录下的所有文件:

这里就以home目录为例,下面来简单分析一下。

其中第一列代表这个文件的类型与权限,第一个字符代表这个文件的类型(目录、文件或链接文件等):
- -:普通文件,如hello.txt。
- d:目录文件。
- l:链接文件。
- b:块设备文件。
- c:字符设备文件。
- p:管道文件。
后面的字符为3个一组,第一组为“文件所有者的权限”,即文件的所有者才能进行读写执行的操作。第二组为“用户组的权限”,只要是在这个组的用户都权限。第三组为“其它非本用户组的权限”。
----更改文件属性命令:
1)、chgrp:更改文件所属用户组
语法格式为:chgrp [-R] 属组名 文件名
参数选项
- -R:递归更改文件所属用户组,就是在更改某个目录文件的所属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2)、chown:更改文件所有者,也可以同时更改文件属组
语法格式为:chown [–R] 属主名 文件名 或者 chown [-R] 属主名:属组名 文件名
参数选项:
- -R:递归更改文件所属用户组,就是在更改某个目录文件的所属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
3)、chmod:更改文件的权限
语法格式为:chmod [选项] 文件名
文件权限的设置方法有两种,分别是使用数字和符号来进行权限更改,推荐使用数字,现在我们来学习:
①、数字类型改变文件权限
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。先复习一下刚刚上面提到的数据:文件的权限字符为:[-rwxrwxrwx] , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
- -:0
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:
# chmod [-R] xyz 文件或目录
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
简单举例:
假如将文件权限改为:[-rwxr-xr],可以发现有些权限没有,那么权限的分数则为:[4+2+1][4+0+1][0+0+0]=750,所以执行:chmod 750 filename。
===============================
②、数字类型改变文件权限
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
- user:用户
- group:组
- others:其他
那么我们就可以使用 u, g, o 来代表三种身份的权限。此外, a 则代表all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

来实践一下:
如果我们需要将文件权限设置为 [-rwxr-xr--] ,可以使用 chmod u=rwx,g=rx,o=r filename 来设定。
如果我们需要将文件权限均设置为可写,可以使用 chmod a+w filename 来设定。
如果我们需要将文件权限去掉而不更改其它的属性,可以使用 chmod a-x filename 来设定。
3、文件与目录管理
1)、cd:[change directory] 切换工作目录。
语法格式为:cd [目录名]
例如:
- cd .. :进入上一层目录
- cd /tmp:进入tmp目录
- cd ~:进入当前用户的home目录(或者使用cd ~ username进入到其它用户的home目录)
2)、pwd:[print working directory] 打印当前工作目录。
语法格式为:pwd
只要输入pwd命令就可以打印当前目录,例如:
![]()
3)、ls:[list] 打印当前所有目录和文件。
语法格式为:ls [选项] [目录或文件名]
注意:如果ls 命令后边是目录,会显示目录下包含的文件信息,如果是文件名则会显示该文件的信息,如果没有跟任何参数则显示当前工作目录下包含的文件信息。
常用选项:
- -a 显示所有文件,包括隐藏文件
- -l 以长格式显示目录或文件的信息
- -d 只显示目录本身的信息,不显示目录下包含的文件
- -h human readable,用人性化显示的形式查看,比如以 K (KB),M (MB),G(GB)表示文件大小
=======================
简单举例:

4)、mkdir:[make directory] 创建目录。
语法格式为:mkdir [选项] 目录名
常用选项:
- -p 可以用于创建嵌套的多级目录(重要!)
5)、cp:[copy] 复制文件或目录
语法格式为:cp [选项] 源文件或目录 目标文件或目录
常用选项:
- -a 相当于-pdr 连在一起使用
- -p 连同文件的属性一起复制过去,而非使用默认的属性(备份常用)
- -d 如果源文件为连接文件的属性,则复制连接文件属性而非文件本身
- -r 递归复制,用于目录的复制
- -i 如果目标文件已经存在,在覆盖是会先询问操作的进行。
6)、mv:[move] 移动文件或目录
语法格式为:mv [选项] 源文件或目录 目标文件或目录
常用选项:
- -f force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i 如果目标文件已经存在是,就会询问是否覆盖
7)、rm:[remove] 删除文件或目录
语法格式为:rm [选项] 文件或目录
常用选项:
- -r 如果删除的是一个目录,则必须使用这个选项
- -f 强制删除,无须用户确认
- 一般删除目录时,两个选项会同时使用 -rf,但是建议删除前先用 mv 命令将待删除的目录移动到一个指定的回收目录中去,等过一段时间确认不再需要这些文件和目录,再使用 rm 命令将其删除。
- -i 在生成前会询问用户是否操作
8)、touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法格式为:touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
- -a 改变档案的读取时间记录。
- -m 改变档案的修改时间记录。
- -c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
- -f 不使用,是为了与其他 unix 系统的相容性而保留。
- -r 使用参考档的时间记录,与 --file 的效果一样。
- -d 设定时间与日期,可以使用各种不同的格式。
- -t 设定档案的时间记录,格式与 date 指令相同。
- --no-create 不会建立新档案。
- --help 列出指令格式。
- --version 列出版本讯息。
三、系统操作命令
1、关机、重启与sync
关机、重启的命令有:shutdown、reboot、halt、poweroff。其中关机命令用的最多的是shutdown,重启用reboot,所以我们通常只用记住shutdown和reboot这两个目录即可。因为Linux系统的关机、重启是比较重要的操作,所以只有root权限才能操作shutdown、reboot等命令。
1)、shutdown:将系统关机或者重启。
语法格式为:shutdown [选项] 时间 警告
常用选项:
- -h 将系统的服务停掉后,立即关机。
- -r 将系统的服务停掉后就重启。
- -t sec sec表示秒,即系统过多少秒后关机。
- -c 取消已经在进行的shutdown命令内容。
简单举例:
- shutdown -t 30:表示30秒之后自动关机。
- shutdown -h now:表示立刻关机。
- shutdown -h 20:15:表示在具体的20:15分会关机,如果在21:15才设置该命令,则隔天才关机。
- shutdown -h +10:表示10分钟后自动关机。
- shutdown -r now:表示立刻重启。
- shutdown -r +30 'The system wil reboot after 30 minute':表示30分钟后系统会重启,并且后面的警告信息会给所有在线的用户。
=============================================
2)、reboot:将系统重启,等同于 shutdown –r now
3)、halt:将系统关机,等同于shutdown –h now 和 poweroff
4)、sync:将数据由内存同步到硬盘中。目前shutdown、reboot、halt等命令在关机是都会调用sync这个工具,但是你如果不放心也可以自己多次执行这个目录。
2、重定向与追加
linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作。
- >:将一条命令执行的结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等),重定向文件时,覆盖文件原有内容
- >> :将一条命令执行的结果追加到其它输出设备
注意:这两个语法在Shell编程中非常有用,所有我们必须要理解。
简单举例:

tee 从标准输入读取数据输出到标准输出或文件
tee 是一个在 Unix 和类 Unix 系统(包括 Linux)中的命令行实用程序,它从标准输入读取数据,并将其内容输出到标准输出和一个或多个文件中。
基本的 tee 命令的使用方式如下:
command | tee outputfile
在这个例子中,command 是你想要执行的任何命令,outputfile 是你想要将输出写入的文件名。command 的输出将会同时显示在终端(即标准输出)和 outputfile 文件中。
例如,如果你想要显示一个目录的内容并将结果保存到一个文件中,你可以使用以下命令:
ls -l | tee directory_contents.txt
这将会在终端显示 ls -l 命令的输出,并将相同的输出写入 directory_contents.txt 文件中。
tee 命令的名字来源于 T 形管道的形状,这是一个允许流体同时流向两个方向的管道类型。在这种情况下,数据(或"流体")从 command 流入 tee,然后被分流到标准输出和文件中。
3、Linux查看系统命令
1. 系统/文件/网络
df -lh 查看磁盘的使用情况以及文件系统被挂载的位置
fdisk -l 查看磁盘分区表及分区结构
stat display file or filesystem status
uname "什么系统",-r "查看内核版本"
du "查看文件占用空间"
dmesg "系统信息"
netstat "由于参数众多,不一一详细写,端口信息"
lsmod 命令,用于列出当前 linux 系统中加载的模块。当驱动开发人员编写好驱动代码,并生成驱动代码对应的驱动模块后,可以通过 insmod xxx.ko 将驱动模块(.ko)加载到 linux 操作系统中。最后,通过 lsmod 命令就可以看到 xxx.ko 已经加载到 linux 系统当中了。
4、Linux中硬件相关命令
查看CPU:
cat /proc/cpuinfo
getconf LONG_BIT 查看是32位还是64位
查看系统信息
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中断
cat /proc/ioports - 设备IO端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有设备的所有分区
cat /proc/pci - PCI设备的信息
cat /proc/swaps - 所有Swap分区的信息
cat /proc/version - Linux的版本号 相当于 uname -r
uname -a - 看系统内核等信息
如何看出redhat的版本以及更新版本(7.3?8.0?)
cat /etc/redhat-release
查看PCI信息: lspci
例子: lspci |grep Ethernet 查看网卡型号
查看USB设备: cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk - l & df
查看各设备的中断请求(IRQ): cat /proc/interrupts
dmidecode查看硬件信息,包括bios、cpu、内存等信息
dmesg | more 查看硬件信息
ls /dev 命令用于查看系统中的驱动设备,包括字符设备、块设备。一个驱动模块可以注册多个设备文件。
如字符设备 i2c-0 ~ i2c-4,这5个都是字符设备,它们的主设备号都是 89,此设备号为 0 ~ 4。
同理,块设备 loop0 ~ loop7,它们的主设备号都是 7,此设备号为 0 ~ 7。
查看内核版本:
查看系统体系结构:uname -a
ubuntu modprobe
modprobe 命令是 Linux 系统中用来加载和卸载内核模块的命令。它会在 /1b/modules/$(uname -r)/ 目录下寻找相应的内核模块文件,并将其插入或卸载出内核
在 Ubuntu 系统中,modprobe 命令通常需要使用 sudo 权限来执行,例如:
sudo modprobe some module
这个命令会尝试加载名为 some_module 的内核模块
如果你想查看已经加载的内核模块,可以使用 1smod 命令
Ismod
这个命令会列出当前已经加载的内核模块列表
如果你需要了解更多关于 modprobe 和内核模块的信息,可以查看相关的文档,例如 man modprobe 和 man Ismod。
网络相关命令
curl是一个命令行下的web客户端,可以在命令行下执行常见的web访问、自动web请求等操作,之前的文章中虫虫曾经专门介绍过。本文我们来总结一下curl使用代理服务器的用法。
Web代理服务器充当客户端和目标服务器之间的中介。客户端首先访问代理,然后代理执行它并将结果返回给客户端。

有些Web站点是有限制的,我们无法直接通过当前IP直接访问目标站点;还有一些站点对访问请求是有一定限制,而我们在请求数据时候为了请求速度也需要突破IP限制。通过使用代理服务,我们就可以突破上述限制。
四、软件的安装与管理
(一)Ubuntu中软件包的管理
Ubuntu作为一款常用的Linux系统,有着Linux下常用的使用命令行操作模式。下面为大家介绍一些管理软件包的常用命令。下面的命令需要在终端下输入,任何实用‘sudo’作为前缀的命令都需要拥有root访问权限,所以会被提示输入密码。
Ubuntu中软件包的查询方法:
Dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.
1. 查看已经安装了哪些包
dpkg -l
如果系统使用时间长,安装了许多包查看不便时,可以使用翻页查看
dpkg -l | lessyexiang@ubuntu:<etc>$ dpkg -l | less
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================================-==========================================-============-===============================================================================
ii accountsservice 0.6.40-2ubuntu11.3 amd64 query and manipulate user account information
ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups
ii amd64-microcode 3.20180524.1~ubuntu0.16.04.1 amd64 Processor microcode firmware for AMD CPUs
ii apparmor 2.10.95-0ubuntu2.10 amd64 user-space parser utility for AppArmor
ii apt 1.2.15ubuntu0.2 amd64 commandline package manager
每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述.
第一字符为期望值,它包括:
u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
i 用户请求安装软件包.
r 用户请求卸载软件包.
p 用户请求清除软件包.
h 用户请求保持软件包版本锁定.
第二列,是软件包的当前状态.此列包括软件包的六种状态.
n 软件包未安装.
i 软件包安装并完成配置.
c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
u 软件包被解包,但还未配置.
f 试图配置软件包,但是失败了.
h 软件包安装,但是但是没有成功.
第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. 其它三种符号则标识相应问题.
h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
x 软包件被破坏,并且被强制保持.
也可以以统配符模式进行模糊查询, 比如我要查找以nano字符开始的所有软件包:
dpkg -l nano*
2. 查看软件xxx安装内容
dpkg -L xxx
可以查看该软件安装的目录和文件。
3. 清除所有已删除包的残余配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
可以清除一些残留无用的配置。
4. 显示系统安装包的统计信息
apt-cache stats
可以统计已经安装包的数量,大小,占用空间等。
5. 显示xxx包的信息
apt-cache show xxx
可以看到某个包的源、版本等信息。
6. 查找文件属于哪个包
dpkg -S filename :在当前安装的包里查找文件。
7. 查询软件xxx依赖哪些包
apt-cache depends xxx
8. 查询软件xxx被哪些包依赖
apt-cache rdepends xxx
yexiang@ubuntu:<etc>$ apt-cache rdepends lirc
lirc
Reverse Depends:
lirc-x
vdr
mythbuntu-live-autostart
mythbuntu-lirc-generator
lirc-x
liblircclient0
kremotecontrol
inputlirc
freevo-lirc
banshee-extension-lirc
9. 在所有源包里查找文件 (包含未安装的包)
apt-cache search filename
(二)包管理工具命令详解
1. dpkg包管理工具
dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg --info "软件包名" --列出软件包解包后的包名称.
dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看.
dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.
dpkg -s 查询已安装的包的详细信息. dpkg -L 查询系统中已安装的软件包所安装的位置.
dpkg -S 查询系统中某个文件属于哪个软件包.
dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
dpkg -reconfigure 重新配置
dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
2. APT管理工具常用命令
apt-cache 加上不同的子命令和参数的使用可以实现查找,显示软件,包信息及包信赖关系等功能.
apt-cache stats 显示当前系统所有使用的Debain数据源的统计信息.
apt-cache search +"包名",可以查找相关的软件包.
apt-cache show +"包名",可以显示指定软件包的详细信息.
apt-cache depends +"包名",可以查找软件包的依赖关系.
apt-get upgrade 更新系统中所有的包到最新版
apt-get install 安装软件包
apt-get --reindtall install 重新安装软件包
apt-get remove 卸载软件包
apt-get --purge remove 完全卸载软件包
apt-get clean 清除无用的软件包
在用命令apt-get install之前,是先将软件包下载到/var/cache/apt/archives中,之后再进行安装的.所以我们可以用apt-get clean清除/var/cache/apt/archives目录中的软件包.
Debian的软件包管理工具命令不完全列表
Debian系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件.每个文件的作用如下:
以 ".conffiles" 结尾的文件记录软件包的配置列表.
以 ".list" 结尾的文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
以 ".md5sums" 结尾的文件记录了md5信息,用来进行包的验证的.
以 ".config" 结尾的文件是软件包的安装配置角本.
以 ".postinst" 角本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
以 ".preinst" 角本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
以 ".prerm" 脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
以 ".postrm" 脚本负责修改软件包链接或文件关联,或删除由它创建的文件.
/var/lib/dpkg/available是软件包的描述信息.
包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.
本文详细介绍Linux系统的目录结构、基本命令、文件管理等核心内容。涵盖了用户管理、文件权限设置、系统操作命令等实用技巧。

4411

被折叠的 条评论
为什么被折叠?



