同样的MD格式,别的平台直接上传解析,CSDN每次还要对几十张图片修修改改,我快放弃这个平台了!
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
登录系统后,在终端输入:
ls /
你会看到以下图示:
树状目录结构为:
有关目录的解释:
/bin:
bin是Binary的缩写,/bin 放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的指令。
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。因为Linux中一切皆文件!
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。例如人员的账号密码文件、 各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有 root 有权力修改。
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,比如在我的系统中只有cheerway
这一个用户。
/lib:
这个目录存放着系统最基本的动态链接共享库,其作用类似于Windows中的DLL文件。几乎所有的应用程序都要使用到这些共享库。
/lost+found:
这个目录一般是空的,当系统非法关机以后,这里就存了一些文件。也就是说当文件系统发生错误时,这里就遗留了一些片段。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。不过有的人喜欢把软件放在usr/local
。这个因人而异吧。
/proc:
**这个目录本身是一个虚拟文件系统(virtual filesystem)!**他放置的数据都是在内存当中, 例如系统核心、进程信息(process)、周边装置的状态及网络状态等等。因为这个目录下的数据都是在内存当中, 所以本身不占任何硬盘空间啊!比较重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/等等。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
进入该目录下,输入如下命令可以一窥cpuinfo文件的内容,但是具体内容我也看不懂/(ㄒoㄒ)/~~:
cat cpuinfo
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。放在/sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, mkfs 等等。
/selinux:
这个目录是Redhat和CentOS所特有的目录,Selinux是一个安全机制,类似于Windows的防火墙,但是这套机制比较复杂,而这个目录就是用来存放Selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
这个目录是用来存放一些临时文件的。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
Linux系统是一个典型的多用户系统,不同的用户有不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件的权限做了不同的规定。
可以使用ls -l
或者ll
命令查看一个文件的属性以及文件所属的用户和组,比如:
实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图):
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
chgrp:更改文件属组
语法:
chgrp [-R] 属性组 文件名
参数选项:
chown:更改文件属主,也可以同时更改其属组
语法:
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
**举例:**进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# 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』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
chmod [-R] xyz 文件名或目录
选项与参数:
举例来说,如果要将一个文件的权限更改为 -rwxr-xr--
的话,那么权限的分数就是:
[4+2+1] [4+0+1] [4+0+0] = 754。
符号类型改变文件权限
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
chmod | u | + 加入 | r | 文件名/目录 |
---|---|---|---|---|
g | - 除去 | w | ||
o | = 设定 | x | ||
a |
如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
# touch test1 // 创建 test1 文件
# ls -al test1 // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r 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 test1
Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
语法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
选项与参数:
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
语法:
pwd [-P]
选项与参数:
实例:单纯显示出目前的工作目录:
上图就直接显示了目录本身,下面是一个带参数的实例:
[root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
语法:
mkdir [-mp] 目录名称
选项与参数:
实例:
加了 -p 的选项,可以自行帮你创建多层目录
也可以在创建目录的时候指定权限,创建权限为 rwx–x--x 的目录:
语法:
rmdir [-p] 目录名称
选项与参数:
不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。
语法:
cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory
选项与参数:
值得一提的是,在修改任何重要的文件之前利用cp进行备份是非常必要的
终于迎来了删库跑路用的命令!
语法:
rm [-fir] 文件或者目录
选项与参数:
如果你想强制递归删除某个东西,比如你公司的数据库文件,可以使用:
rm -rf 数据库文件夹
做完这一步操作,恭喜你可以跳槽加薪了!
语法:
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
选项与参数:
Linux系统中使用以下命令来查看文件的内容:
语法:
cat [-AbEnTv]
选项与参数:
实例:
如果你仔细看的话,会发现tac其实是cat反过来,他们表达的意思也是相反的
示例:
确实是倒过来了,很迷惑这个命令的作用是什么?
语法:
nl [-bnw] 文件
选项与参数:
示例:
在 more 这个程序的运行过程中,你有几个按键可以按的:
高级用法:
more +3 test.log #从第三行开始显示
more -4 test.log #每屏显示四行内容
more +/java test.log #从第一个java关键字处前两行开始显示
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less运行时可以输入的命令有:
语法:
head [-n number] 文件名
示例:
选项与参数:
默认显示前十行
tail [-n number] 文件名
示例:
选项与参数:
>
输出重定向:会将原来的文件内容覆盖
>>
追加,不会覆盖原来的内容,而是追加在文件尾部
示例:
再次使用ls -l > a.txt
,这次不加-a参数:
再次输入ls -al >> a.txt
:
示例:将文件1的内容覆盖到文件2
cat 文件1 > 文件2
语法:
echo [options] 输出的内容
示例:使用echo指令输出环境变量
echo $PATH
查看已经执行过的历史命令,也可以执行历史命令
语法:
history n
n表示要显示的个数
示例:最近使用的全部指令
示例:最近使用的五条指令
示例:执行标号为17的指令
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件地文件或者目录显示在终端。
语法:
find 搜索范围 [选项]
选项说明:
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名的所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
示例:根据文件名查找文件
根据拥有者查找文件
查找整个Linux系统中大于20M的文件(+n 大于,-n小于,n等于)
查找所有的.txt
文件
locate 可以快速定位文件路径。locate指令利用事先建立好的系统中所有文件名称及其路径的locate数据库实现快速定位给定的文件。
locate无需遍历整个文件系统,所以速度非常快,为了保证查询结果的精确性,管理员必须定期更新locate数据库
语法:
locate 文件名
由于locate指令基于数据库进行查询,所以第一次运行前,必需使用updatedb指令创建数据库
示例:使用locate快速定位a.txt文件所在的目录
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
Linux 用户管理相关命令:
useradd 选项 用户名
:添加用户账号userdel 选项 用户名
:删除用户帐号usermod 选项 用户名
:修改帐号passwd 用户名
:更改或创建用户的密码passwd -S 用户名
:显示用户账号密码信息passwd -d 用户名
: 清除用户密码useradd
命令用于 Linux 中创建的新的系统用户。useradd
可用来建立用户帐号。帐号建好之后,再用passwd
设定帐号的密码.而可用userdel
删除帐号。使用useradd
指令所建立的帐号,实际上是保存在 /etc/passwd
文本文件中。
passwd
命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group
文件的更新。
Linux 系统用户组的管理相关命令:
groupadd 选项 用户组
:增加一个新的用户组groupdel 用户组
:要删除一个已有的用户组groupmod 选项 用户组
: 修改用户组的属性Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以.gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
,其中:
比如:假如 test 目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包 test 目录并指定压缩后的压缩包名称为 test.tar.gz 可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
或 tar -zcvf test.tar.gz /test/
命令:tar [-xvf] 压缩文件
其中:x:代表解压
示例:
tar -xvf test.tar.gz
tar -xvf test.tar.gz -C /usr
(- C 代表指定解压的位置)grep:过滤查找
管道符号:|
表示将前一个命令的处理结果输出传递后后面的命令处理
语法:
grep [选项] 查找内容 源文件
选项说明:
示例:在b.txt文件中,查找yes所在行并显示行号
语法:
df -lh
语法:
du -h /目录
选项说明:
示例:查看/opt 目录的占用情况,深度为1
以树状显示目录结构
使用之前需要yum install tree
才能使用tree
命令!
wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法:
wc [-clw][--help][--version][文件...]
参数说明:
- -c或–bytes或–chars 只显示Bytes数。
- -l或–lines 只显示行数。
- -w或–words 只显示字数。
- –help 在线帮助。
- –version 显示版本信息。
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
wc filename
结果是:3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598
查看进程使用的命令是:ps
,一般来说使用的参数是ps -aux
示例:
参数详细说明:
示例:以全格式显示当前所有的进程,查看进程的父进程
参数详细说明:
语法:
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过名称杀死进程,也支持通配符,这在系统因负载过大而变慢时很有用)
选项说明:
语法:
pstree [选项]
选项说明:
top与ps命令很相似。他们都是用来显示正在执行的进程。top与ps最大的不同之处在于top在执行一段时间内可以更新正在运行的进程
语法:
top [选项]
选项说明:
交互操作说明:
示例:输入top命令
然后再输入”u“,再输入用户名,即可监控指定用户名的进程
输入”k“,在输入要结束的进程ID,即可杀死进程
示例:指定10秒更新一次
top -d 10
语法:
netstat [-anp]
选项说明:
示例:查看所有的网络连接
示例:查看所有的tcp连接