1 基础介绍
1.1 unix
与
linux
区别
1.2 内核
Ubuntu
主要界面视图,因为窗口也是需要消耗资源的;
CentOS
主要运用在服务器 linux启动时我们会看到许多启动信息。
Linux
系统的启动过程并不是大家想象中的那么复杂,其过程可以分为
5
个阶段: 内核的引导。 运行
init
。 系统初始化。 建立终端 。 用户登录系统。
1.3 linux
系统目录结构
输入命令
ls /
以下是对这些目录的解释:
/bin : bin 是 Binary 的缩写 , 这个目录存放着最经常使用的命令。/boot :这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :dev 是 Device( 设备 ) 的缩写 , 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc :这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home : 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/lib : 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。/lost+found : 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。/media : linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后, linux 会把识别的设备挂载到这个目录下。/mnt : 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。/opt : 这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。/proc : 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all/root : 该目录为系统管理员,也称作超级权限者的用户主目录。/sbin : s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。/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 的预设放置也是在这里。
1.4 linux
基础命令
shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。 shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。shutdown -P now ### 关闭机器shutdown -H now ### 停止机器shutdown -r09:35 ### 在 09:35am 重启机器要取消即将进行的关机,只要输入下面的命令:shutdown -chalt 命令通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。halt ### 停止机器halt -p ### 关闭机器halt --reboot ### 重启机器poweroff 会发送一个 ACPI 信号来通知系统关机。poweroff ### 关闭机器poweroff --halt ### 停止机器poweroff --reboot ### 重启机器reboot 命令 reboot 通知系统重启。reboot ### 重启机器reboot --halt ### 停止机器reboot -p ### 关闭机器
2 linux
用户和用户组
Linux
系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。 用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。 实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。
2.1
增加一个用户组
groupadd
选项 用户组
可以使用的选项有:
-g GID
指定新用户组的组标识号(
GID
)。
-o
一般与
-g
选项同时使用,表示新用户组的
GID
可以与系统已有用户组的
GID
相同。
groupadd group1 ##
此命令向系统中增加了一个新组
group1
groupadd -g 1003 group2 ##
此命令向系统中增加了一个新组
group2
,同时指定新组的组标识号是 累加
1
2.2
删除一个用户组
groupdel
用户组
例子
groupdel group1 ##
此命令从系统中删除组
group1
。
2.3
修改用户组的属性
groupmod
选项 用户组
常用的选项有:
-g GID
为用户组指定新的组标识号。
-o
与
-g
选项同时使用,用户组的新
GID
可以与系统已有用户组的
GID
相同。
-n
新用户组 将用户组的名字改为新名字
例子
groupmod –g 10000 -n group3 group2 ##
此命令将组
group2
的标识号改为
10000
,组名修改为
group3
。
2.4
添加用户账号
useradd
选项 用户名
参数说明:
选项
:
-c comment
指定一段注释性描述。
-d
目录 指定用户主目录,如果此目录不存在,则同时使用
-m
选项,可以创建主目录。
-g
用户组 指定用户所属的用户组。
-G
用户组,用户组 指定用户所属的附加组。
-s Shell
文件 指定用户的登录
Shell
。
-u
用户号 指定用户的用户号,如果同时有
-o
选项,则可以重复使用其他用户的标识号。
用户名
:
指定新账号的登录名。
例子
1
useradd –d /usr/peter -m peter ##
创建用户
peter
,其中
-d
和
-m
选项用来为登录名
peter
产生一个主目录
/usr/peter
。
例子
2
useradd -s /bin/sh -g group1 –G group2,root peter2 ##
新建用户
peter2
,登录
Shell
是
/bin/sh
,属于
group1
,又属于
group2
和
root
。
这里可能新建组:
#groupadd group1
及
groupadd group2
增加用户账号就是在
/etc/passwd
文件中为新用户增加一条记录,同时更新其他系统文件如
/etc/shadow, /etc/group
等。
2.5
删除用户账号
userdel
选项 用户名
常用的选项是
-r
,它的作用是把用户的主目录一起删除。
例子
userdel -r peter2 ##
删除用户
peter2
(主要是
/etc/passwd, /etc/shadow, /etc/group
等)的记录,同时删除用户的主目录。
2.6
修改用户账号
usermod
选项 用户名
常用的选项包括
-c, -d, -m, -g, -G, -s, -u
以及
-o
等,这些选项的意义与
useradd
命令中的选项一样,可以为用户指定新的资源值。
例子
usermod -s /bin/sh -d /home/p –g group2 peter ##
将用户
peter
的登录
Shell
修改为
sh
,主目录改为
/home/p
,用户组改为
group2
。
2.7
用户口令的管理
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
passwd
选项 用户名
可使用的选项:
-l
锁定口令,即禁用账号。
-u
口令解锁。
-d
使账号无口令。
-f
强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。例如,假设当前用户是
peter
,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
passwd peter
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,
passwd
命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。 为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用
8
位长的口令,口令中包含有大写、小写字母和数
字,并且应该与姓名、生日等不相同。 为用户指定空口令时,执行下列形式的命令:
passwd -d sam
此命令将用户
sam
的口令删除,这样用户
sam
下一次登录时,系统就不再允许该用户登录了。
passwd
命令还可以用
-l(lock)
选项锁定某一用户,使其不能登录,例如:
passwd -l sam
2.8
切换用户组
newgrp root
这条命令将当前用户切换到
root
用户组,前提条件是
root
用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
2.9
与用户账号有关的系统文件
完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。 与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括
/etc/passwd, /etc/shadow, /etc/group
等。 下面分别介绍这些文件的内容。
2.9.1 /etc/passwd
文件
Linux
系统中的每个用户都在
/etc/passwd
文件中有一个对应的记录行,它记录了这个用户的一些基本属性。 这个文件对所有用户都是可读的。它的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh
从上面的例子我们可以看到,
/etc/passwd
中一行记录对应着一个用户,每行记录又被冒号
(:)
分隔为
7
个字段,其格式和具体含义如下:
用户名
:
口令
:
用户标识号
:
组标识号
:
注释性描述
:
主目录
:
登录
Shell
1
)
"
用户名
"
是代表用户账号的字符串。 通常长度不超过
8
个字符,并且由大小写字母和
/
或数字组成。登录名中不能有冒号
(:)
,因为冒号在这里是分隔符。 为了兼容起见,登录名中最好不要包含点字符
(.)
,并且不使用连字符
(-)
和加号
(+)
打头。
2
)
“
口令
”
一些系统中,存放着加密后的用户口令字。 虽然这个字段存放的只是用
户口令的加密串,不是明文,但是由于
/etc/passwd
文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多
Linux
系统(如
SVR4
)都使用了
shadow
技术,把真正的加密后的用户口令字存放到
/etc/shadow
文件中,而在
/etc/passwd
文件的口令字段中只存放一个特殊的字符,例如
“x”
或者
“*”
。
3
)
“
用户标识号
”
是一
个整数,系统内部用它来标识用户。 一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录
Shell
等。 通常用户标识号的取值范围是
0
~
65 535
。
0
是超级用户
root
的标识号,
1
~
99
由系统保留,作为管
理账号,普通用户的标识号从
100
开始。在
Linux
系统中,这个界限是
500
。
4
)
“
组标识号
”
字段记录的是用户所属的用户组。 它对应着
/etc/group
文件中的一条记录。
5)“
注释性描述
”
字段记录着用户的一些个人情况。 例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的
Linux
系统中,这个字段的
格式并没有统一。在许多
Linux
系统中,这个字段存放的是一段任意的注释性描述文字,用做
finger
命令的输出。
6)“
主目录
”
,也就是用户的起始工作目录。 它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的
主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7)
用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即
Shell
。
3.9.2 /etc/group
文件
用户组的所有信息都存放在
/etc/group
文件中。
例子
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
此文件的格式类似于
/etc/passwd
文件,由冒号
(:)
隔开若干个字段,这些字段有:
组名
:
口令
:
组标识号
:
组内用户列表
1. "
组名
"
是用户组的名称,由字母或数字构成。与
/etc/passwd
中的登录名一样,组名不应重复。
2. "
口令
"
字段存放的是用户组加密后的口令字。一般
Linux
系统的用户组都没有口令,即这个字段一般为空,或者是
*
。
3. "
组标识号
"
与用户标识号类似,也是一个整数,被系统内部用来标识组。
4. "
组内用户列表
"
是属于这个组的所有用户的列表
/b]
,不同用户之间用逗号
(,)
分隔。这个用户组可能是用户的主组,也可能是附加组。
3
文件与目录
3.1
文件基本属性
3.1.1
文件的属性概貌
Linux
系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,
Linux
系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在
Linux
中我们可以使用
ll
或者
ls –l
命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# 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-9
这些数字来表示。 第
0
位确定文件类型,第
1-3
位确定属主(该文件的所有者)拥有该文件的权限。 第
4-6
位确定属组(所有者的同组用户)拥有该文件的权限,第
7-9
位确定其他用户拥有该文件的权限。 其中,第
1
、
4
、
7
位表示读权限,如果用
"r"
字符表示,则有读权限,如果用
"-"
字符表示,则没有读权限; 第
2
、
5
、
8
位表示写权限,如果用
"w"
字符表示,则有写权限,如果用
"-"
字符表示没有写权限;第
3
、
6
、
9
位表示可执行权限,如果用
"x"
字符表示,则有执行权限,如果用
"-"
字符表示,则没有执行权限。
3.1.2 Linux
文件属主和属组
[root@www /]# 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
用户来说,一般情况下,文件的权限对其不起作用。
3.1.2.1 chgrp:
:
语法:
chgrp [-R]
属组名 文件名
参数选项
-R
:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上
-R
的参数,那么该目录下的所有文件的属组都会更改。
3.1.2.2 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
3.2
文件与目录管理命令
我们知道
Linux
的目录结构为树状结构,最顶级的目录为根目录
/
。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
路径的写法,由根目录
/
写起,例如:
/usr/share/doc
这个目录。
路径的写法,不是由
/
写起,例如由
/usr/share/doc
要到
/usr/share/man
底下时,可以写成:
cd ../man
这就是相对路径的写法啦!
接下来我们就来看几个常见的处理目录的命令吧:
ls: 列出目录cd :切换目录pwd :显示目前的目录mkdir :创建一个新的目录rmdir :删除一个空的目录cp: 复制文件或目录rm: 移除文件或目录mv: 移动文件与目录,或修改文件与目录的名称
你可以使用
man [
命令
]
来查看各个命令的使用文档,如 :
man cp
。
3.3 Linux
文件内容查看
Linux
系统中使用以下命令来查看文件的内容: 你可以使用
man [
命令
]
来查看各个命令的使用文档,如 :
man cp
。
cat
由第一行开始显示文件内容
tac
从最后一行开始显示,可以看出
tac
是
cat
的倒著写!
nl
显示的时候,顺道输出行号!
more
一页一页的显示文件内容
less
与
more
类似,但是比
more
更好的是,他可以往前翻页!
head
只看头几行
tail
只看尾巴几行
4 Linux vi/vim
操作
基本上
vi/vim
共分为三种模式,分别是命令模式(
Command mode
),输入模式(
Insert mode
)和底线命令模式(
Last line mode
)。 这三种模式的作用分别是:
4.1
命令模式
用户刚刚启动
vi/vim
,便进入了命令模式。 此状态下敲击键盘动作会被
Vim
识别为命令,而非输入字符。比如我们此时按下
i
,并不会输入一个字符,
i
被当作了一个命令。 以下是常用的几个命令:
i
切换到输入模式,以输入字符。
x
删除当前光标所在处的字符。
:
切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动
Vim
,进入了命令模式,按下
i
,切换到输入模式。 命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
4.2
输入模式
在命令模式下按下
i
就进入了输入模式。 在输入模式中,可以使用以下按键:
ENTER
,回车键,换行
BACK SPACE
,退格键,删除光标前一个字符
DEL
,删除键,删除光标后一个字符
,在文本中移动光标
HOME
/
END
,移动光标到行首
/
行尾
Page Up
/
Page Down
,上
/
下翻页
Insert
,切换光标为输入
/
替换模式,光标将变成竖线
/
下划线
ESC
,退出输入模式,切换到命令模式
4.3
底线命令模式
在命令模式下按下
:
(英文冒号)就进入了底线命令模式。 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。 在底线命令模式中,基本的命令有(已经省略了冒号):
q
退出程序
w
保存文件
wq
保存退出
5
安装程序
rpm/yum
5.1 rpm
方式
需要去下载相应的
rpm
格式的安装包
xxxx.rpm
rpm [
参数
] rpm
包
-i
安装
-U
更新(很少用)
-e
卸载
-v
显示安装信息
-h
显示安装进度
例子
rpm -ivh jdk-8u172-linux-x64.rpm
安装
jdk8
并显示安装进度和安装信息
rpm -qa|grep jdk
查看
jdk
的安装包
rpm -e jdk1.8-1.8.0_221-fcs.x86_64
卸载
jdk8
,只适用于
rpm
包安装的软件
5.2 yum
方式
yum
(
Yellow dog Updater
, Modified
)是一个在
Fedora
和
RedHat
以及
SUSE
中的
Shell
前端软件包管理器。 基於
RPM
包管理,能够从指定的服务器自动下载
RPM
包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum
提供了查找、安装、删除某一个、一组甚至全部软件
包的命令,而且命令简洁而又好记。
5.2.1 yum
语法
yum [options] [command] [package ...]
options
:可选,选项包括
-h
(帮助),
-y
(当安装过程提示选择全部为
"yes"
),
-q
(不显示安装的过程)等等。
command
:要进行的操作。
package
操作的对象。
例:
yum search jdk
搜索
jdk
安装包
yum install -y java-1.8.0-openjdk.x86_64
安装
openjdk
,
-y
表示安装过程中的询问自动选
y
yum list installed
|
grep jdk
列出安装的
jdk
软件包
yum remove java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-headless.x86_64
卸载
jdk
5.2.2 yum
常用命令
1.
列出所有可更新的软件清单命令:
yum check-update
2.
更新所有软件命令:
yum update
3.
仅安装指定的软件命令:
yum install <package_name>
4.
仅更新指定的软件命令:
yum update <package_name>
5.
列出所有可安裝的软件清单命令:
yum list
6.
删除软件包命令:
yum remove <package_name>
7.
查找软件包 命令:
yum search <keyword>
8.
清除缓存命令
:
yum clean packages:
清除缓存目录下的软件包
yum clean headers:
清除缓存目录下的
headers
yum clean oldheaders:
清除缓存目录下旧的
headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :
清除缓存目录下的软件包及旧的
headers
5.2.3 yum
源
官方的
yum
源在国内访问效果不佳。需要改为国内比较好的阿里云或者网易的
yum
源 在
/etc/yum..repos.d/
下进行如下操作
(
请做好相应备份
)
:
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
运行以下命令生成缓存
yum clean all
yum makecache
6
常用命令
6.1 cd
命令
cd
进入用户主目录;
cd ~
进入用户主目录;
cd -
返回进入此目录之前所在的目录;
cd ..
返回上级目录(若当前目录为
“/“
,则执行完后还在
“/"
;
".."
为上级目录的意思);
cd ../..
返回上两级目录;
6.2
新建文件夹和文件:
mkdir touch
mkdir
创建文件夹
mkdir dirname
直接跟文件夹名,可在当前目录下创建文件夹
mkdir /opt/lamp/dirname
可跟路径
mkdir -p /opt/lam/dirname
假如
lam
不存在,需要用
-p
才可以创建该文件夹
touch
新建文件
touch dilename
可直接跟文件名在当前目录下创建新的文件
6.3 cat/less/more/tail
等文件查看命令
6.3.1 cat
命令
语法格式
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明:
-n
或
--number
:由
1
开始对所有输出的行数编号。
-b
或
--number-nonblank
:和
-n
相似,只不过对于空白行不编号。
-s
或
--squeeze-blank
:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v
或
--show-nonprinting
:使用
^
和
M-
符号,除了
LFD
和
TAB
之外。
-E
或
--show-ends :
在每行结束处显示
$
。
-T
或
--show-tabs:
将
TAB
字符显示为
^I
。
-A, --show-all
:等价于
-vET
。
-e
:等价于
"-vE"
选项;
-t
:等价于
"-vT"
选项;
cat
是一次性读取所有内容,文件内容较多时速度较慢
6.3.2 less
命令
语法格式
less [
参数
]
文件
参数说明:
-b <
缓冲区大小
>
设置缓冲区的大小
-e
当文件显示结束后,自动离开
-f
强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g
只标志最后搜索的关键词
-i
忽略搜索时的大小写
-m
显示类似
more
命令的百分比
-N
显示每行的行号
-o <
文件名
>
将
less
输出的内容在指定文件中保存起来
-Q
不使用警告音
-s
显示连续空行为一行
-S
行过长时间将超出部分舍弃
-x <
数字
>
将
"tab"
键显示为规定的数字空格
/
字符串:向下搜索
"
字符串
"
的功能
?
字符串:向上搜索
"
字符串
"
的功能
n
:重复前一个搜索(与
/
或
?
有关)
N
:反向重复前一个搜索(与
/
或
?
有关)
b
向后翻一页
d
向后翻半页
h
显示帮助界面
Q
退出
less
命令
u
向前滚动半页
y
向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]
: 向下翻动一页
[pageup]
: 向上翻动一页
q / ZZ -
退出
less
命令
6.3.3 more
命令
语法
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数:
-num
一次显示的行数
-d
提示使用者,在画面下方显示
[Press space to continue, 'q' to quit.]
,如果使用者按错键,则会显示
[Press 'h' for instructions.]
而不是
'
哔
'
声
-l
取消遇见特殊字元
^L
(送纸字元)时会暂停的功能
-f
计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p
不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c
跟
-p
相似,不同的是先显示内容再清除其他旧资料
-s
当遇到有连续两行以上的空白行,就代换为一行的空白行
-u
不显示下引号 (根据环境变数
TERM
指定的
terminal
而有所不同)
+/pattern
在每个文档显示前搜寻该字串(
pattern
),然后从该字串之后开始显示
+num
从第
num
行开始显示
fileNames
欲显示内容的文档,可为复数个数
q
退出
6.3.4 tail
命令
tail filename
读取
filename
最后
10
行内容
tail -f filename
实时动态读取
filename
最后
10
行内容
tail -20f filename
实时动态读取
filename
最后
20
行内容
6.4
查看文件大小的命令
du/df
du -sh *
显示当前目录下所有文件的大小
du -sh filename
显示该文件大小
du -sh
显示当前目录所占空间大小
-s
或 仅显示总计,只列出最后加总的值。
-h
或 以
K
,
M
,
G
为单位,提高信息的可读性。
df
显示磁盘占用信息 直接
df
默认一
k
为单位
df -lh
显示本地系统的占用信息,以
K
,
M
,
G
为单位
6.5
查看服务
查看端口是否被暂用
netstat -anp |grep
端口号
free-m //
查看
LINUX
内存剩余容量
6.6
杀掉进程
kill
命令
查看
java
的进程
ps -ef | grep java
kill
最常用的参数是
-9
,用法:
kill -9
进程号 即可强制杀掉该进程
统计命令
wc
常用的参数是
-l
用法:
wc -l
,例:
ps -ef|grep java|wc -l
统计查询出的
java
进程的行数
查找命令
find/locate/whereis/which
find -name
后跟文件名,可查看文件所在目录,可跟
user
,查看属于
user
的文件
find -name filename
查找
filename
所在目录
find -name name*
查找开头为
name
的文件所在目录
find -name *name
查找结尾为
name
的文件所在目录
find -name *name*
查找包含
name
字符串的文件所在目录
find -user faith
查看用户
faith
的文件
locate
用法与
find
基本相似,只是
locate
搜索速度较快些,
locate
一般系统不会自带,需要安装,可用
yum
安装
whereis
只能搜索程序名
which
则是只查询
path
中的环境变量
6.7
压缩和解压命令
gzip/guzip zip/unzip tar
gzip
和
gunzip
一般可用参数是
-r
,例
:
gzip test.txt
压缩文件
gzip -r test
压缩所有
test
下的子文件
gunzip test.gz
解压文件
zip
和
unzip
可用参数较多,例:
zip test
不跟参数直接使用
zip -r test
递归压缩
test
下所有文件
unzip test
不跟参数直接使用
unzip -n
解压时不覆盖已存在的文件
unzip -o
解压时覆盖已存在的文件
unzip -d
将文件解压到目录中去
tar
使用的较为多些,用法也多,最常用的是
zxcvf
几个参数,例:
-c
创建新文档,就是代表压缩的意思
-x
解压文档
-f
使用归档文件
-z
使用
gzip
解压
-v
详细输出模式
最为常用的使用方法:
tar -zcvf test.tar test
将
test
压缩为
test.tar
并输出详细信息
tar -zxvf test.tar
将
test.tar
解压缩,并输出详细信息
Shell
脚本
shell
语言是一门
linux
系统下的工具语言,主要用于写一些
linux
系统下的操作命令,实际上
Shell
是一个命令解释器, 它解释由用户输入的命令并且把它们送到内核。或者直接理解为
shell
命令是可以执行多个
linux
命令的脚本。
Shell
编程跟
JavaScript
、
php
编程一样,只要有一个能编写代码的文本编辑器和一个能解释执
行的脚本解释器就可以了。
Linux
的
Shell
种类众多,常见的有:
Bourne Shell (/usr/bin/sh 或 /bin/sh )Bourne Again Shell (/bin/bash )C Shell (/usr/bin/csh )K Shell (/usr/bin/ksh )Shell for Root (/sbin/sh )
……
shell
并不复杂,有编程基础的话,简单入门两三个小时就可以入门,主要是把一些重复操作的
linux
命令写成
shell
脚 本来执行一下。以下列出
shell
常规的一些要素:
1
查看
Shell
版本
/
执行
#!/bin/sh Bourne shell
版本
#!/bin/bash Bourne Again Shell
版本
chomd +x ./test.sh #
使脚本具有执行权限
./test.sh #
执行脚本
“./”
表示当前目录下
2 Shell
脚本基础语法
#!/bin/bash ##声明 bash 脚本
##demo ##注释
echo "Hello World !" ##输出
name="fame老师" ## 定义变量
echo $myUrl ## 输出变量
echo "I am ${name}'s friend" ##字符串拼接
echo "" ## 换行
names=("Zero老师" "Shine York老师" "Pack老师") ##定义数组
echo ${names[@]} ##遍历数
echo "I am ${names[1]}'s friend" ##第二个元素
echo "I have ${#names[@]} friends" ##数组长度
echo ""
for var in ${names[@]}; ##循环数组
do
if test $var = 'Peter' ##字符串相等
then
echo "I am Peter"
else
echo "I am ${var}'s friend"
fi
done
echo ""
重定向:
1
、
test 'aa' -eq "bb" > out ##
命令输出到
out
文件,报错信息并不会进入
out
2
、
test 'aa' -eq "bb" > out 2>&1 ##
将
stderr
合并到
stdout
,则报错信息进入了
out
3 mysql
定时备份
需求:
1
、可以自定义每天什么时间来执行指令,进行备份数据库
wjy
到
/home
目录下(这个目录可以根据具体情况来自定义);
2
、备份开始和备份结束能够给出相对应的提示信息;
3
、备份后的文件要求以备份时间为文件名,并打包成
.tar.gz
的形式,比如:
2019-02-21.tar.gz 4
、在备份的同时,检查是否有大于
10
天前备份
的数据库文件,如果有就将其删除;
echo "===开始备份==="
BACKUP=/home
DATETIME=$(date +%Y-%m-%d)
echo "===备份的路径是:$BACKUP/$DATETIME/$DATETIME.tar.gz"
#主机
HOST=217.0.0.1
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=test
#创建备份的路径
#如果备份的路径文件夹存在,就使用,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "===备份文件成功==="
设置每天4点备份mysql数据
#创建定时任务
crontab –e
0 4 * * * /data/dbdata/backup_mysql.sh