您的位置:首页 > 运维架构 > Linux

linux 基础知识总结

2016-07-29 15:08 549 查看

linux 基础知识总结

一.课程结构:

(一)预科部分:

初始 linux

学会如何安装 linux 操作系统

了解 linux 的目录结构

掌握 linux 下的常规操作

(二)linux 系统知识:

shell 的简介和使用

使用 man 手册获取帮助–help

管理系统用户和组

文件权限(文件权限的意义和修改)

vim 的使用(关键字:快捷键操作)

(三)linux可能遇上的问题

制作 yum 源(本地、远程)及 yum 命令的基本操作

图形界面和字符界面切换

归档和压缩(关键字:tar 命令)

查看管理系统进程熟练掌握以下命令:

(一)基础部分:

1. Linux的含义

严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;

Linux 的全称是GNU/Linux,这才算是一个真正意义上的 Linux 系统。

GNU 是 Richard Stallman 组织的一个项目,世界各地的程序员可以变形 GNU 程序,同时遵循 GPL 协议,允许任何人任意改动。但是,修改后的程序必须遵循 GPL 协议。

2.安装 redhat 系统

3.linux 的目录结构

http://yangrong.blog.51cto.com/6945369/1288072

4.掌握 linux 下的常规操作

(0).基础

<1> 用户权限

登陆 linux 系统需要用户名和密码,分为超级用户(root)和普通用户,两者之间存在着权限的差异。如果是在控制台中要进行用户的切换使用
su
命令,超级用户切入到普通用户可以直接切换。

登陆控制台之后我们可以看到一个等待用户输入命令的行提示符号:

[root@server home]#


第一个是指用户为
root
,
server
为我们的主机名(输入命令
hostname
可以查看),第三个为我们当前工作目录

命令行提示符的结尾为
#
说明是超级用户,如果是
$
说明是普通用户

<2>文件路径(绝对路径和相对路径)

绝对路径:在 Linux 中,绝对路径是从/(也被称为根目录)开始的,比如
/usr
/etc/X11


相对路径:对应的就不是从
/
开始描述的,以当前目录
.
开始进行描述。(
.
为当前目录,
..
为当前目录的上一级目录)

<3> linux 下的网络配置:

关于 linux 的网络配置,redhat6 和 redhat7 有着细微的差别:

网卡的名称发生了改变,在 redhat6 中,我们着重关注的文件是
ifcfg-eth0
ifcfg-br0
(与虚拟机进行桥接的文件),

而在 redhat7中,
ifcfg-eth0
变成了
ifcfg-enp3s0f0
的形式,也就是说
eth0
网卡失效了。

但是这几个文件的目录并没有发生改变:网络配置文件目录:

/etc/sysconfig/network-scripts/


如 果 我 们 不 进 行 桥 接 的 情 况 下 , 在
ifcfg-eth0
ifcfg-enp3s0f0
中需要写入以下参数:

DEVICE
设备名称与 ifcfg-后的名字要相同,否则系统无法识别;

ONBOOT YES|NO


在重新启动网络时是否开启该网卡

BOOTPROTO dhcp | (static | none)


//dhcp 表示我们主机的 IPADDR,GATEWAY,DNS 都是自动获取的,这个设置要想成功的话,当前的环境中必须要有 dhcp 服务器开启,否则会获取失败,如果设置为 static 或者 none,则需要手动设置 IPADDR,GATEWAY 和 DNS1 的值。

GATEWAY
环境的网关 IP

IPADDR
与网关在同一网段的 IP

DNS1
域名解析服务器 IPNETMASK

子网掩码
(可以与 IPADDR 进行与运算确定该 IP网段)

(1).文件和目录操作命令

<1>.ls 命令

这个命令就相当于
dos
下的
dir
命令一样 也是 Linux 控

制台命令中最为重要几个命令之一,ls 最常用的参数有三个
-a
-l


–F
:

ls -a


Linux 系统上的文件以.开头的文件被系统视为隐藏文件,仅用 ls 命令是看不到他们的。而用
ls -a
除了显示一般文件名外,连隐藏文件也会显示出来。

ls –l


这个命令可以使用长格式显示文件内容 如果需要察看更详细的文件资料就要用到
ls -l
这个指令。

ls -F


在列出的文件 目录 名称后加一符号 例如可执行文件加”
*
“, 目录则加 “
/
“。

<2>.cd 命令

cd
这个命令是用来进出目录的,它的使用方法和在 dos 下没什么两样,但和 dos 不同的是 Linux 的目录对大小写是敏感的如果
大小写
拼写有误,你的 cd 操作是成功不了的。另外,cd 如果直接输

入,cd 后面不加任何东西。会回到使用者自己的 Home 目录,假设如果是 root 那就是回到/root。这个功能同
cd ~
是一样的。

<3>. mkdir rmdir 命令

mkdir
命令用来建立新的目录,如输入如下命令

mkdir work


将在当前目录下新建一个 work 目录

rmdir 用来删除已建立的目录,如输入如下命令

rmdir work


将删除已存在的空目录 work

*如果要删除的目录不为空的话,使用 rmdir 无法进行删除,

使用命令:
rm 目录文件 -fr


<4>. cp 命令

cp
这个命令相当于 dos 下面的
copy
命令;具体用法是:

cp –r 源文件(source) 目的文件(target)


参数 r 是指连同源文件中的子目录一同拷贝.在我们的 shell 设置中,把 cp -r 的别名设置成了 cp,两者功能相同。

<5>. rm 命令

rm 这个命令是用来删除文件的,rm 命令常用的参数有三个-i,-r,-f.比如我现在要删除一个名字为 text 的一个文件,输入如下命令

rm –i test


系统会询问我们是否要删除 test 文件 敲了 y/n 确认是否

rm –r 目录名


这个操作可以连同这个目录下面的子目录都删除.功能比上面讲到的 rmdir 更强大 不仅可能删除指定的目录,而且可以删除该目录下所有文件和子目录。

rm –f 文件名


这个操作可以不经确认强制删除文件

需要强调的是,rm 文件 -fr 这个命令是十分危险的,当你不清楚它执行后的结果的时候请不要轻易使用,以免造成文件的丢失。

<6>. mv 命令

mv 这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名

比如:

mv /tmp/xxx.tar /root


该命令将/tmp 目录下的 xxx.tar 文件移动到/root 目录下,

需要注意的是 mv 此时和 cp 命令有着些许差别,mv 会把移动文件的

安全上下文属性保留,cp 则会使用目标目录的安全上下文。查看文件的安全上下文:

[root@foundation0 mnt]# ll file -Z
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 file


这 个 是 cp 后 的 结 果 , 安 全 上 下 文 由 mnt_t 改为public_content_t。

[root@foundation0 mnt]# cp file /var/ftp/pub/file1
[root@foundation0 mnt]# ll /var/ftp/pub/file1 -Z


这个是 mv 后的结果,安全上下文未发生改变:

[root@foundation0 mnt]# mv file /var/ftp/pub/
[root@foundation0 mnt]# ll /var/ftp/pub/file -Z
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0


安全上下文是 linux 系统中另外一种安全机制,与 selinux是息息相关的。相当于给每个文件一个标签,通过安全上下文可以限制文件的功能。文件重命名:

mv aaa.tar bbb.tar

则是将当前目录下的文件 aaa.tar 更名为 bbb.tar

<7>. cat 命令

cat
这个命令是 linux 中非常重要的一个命令,它的功能是显示或连结一般的 ascii 文本文件。它的用法如下:

cat text


该命令显示 text 这个文件的内容

cat file1 file2


该命令依顺序显示 file1,file2 的内容

cat file1 file2>file3


该命令把 file1,file2 的内容结合起来再重定向>到 file3文件中

<8>. more 命令

more 是显示一般文本文件的指令,如果一个文本文件太长了,超过一个屏幕的画面,用 cat 来看实在是不理想就可以试试 more。

用法如下:

more file1


<9>. pwd 命令

pwd 这个命令的作用是显示用户当前的工作路径,直接输入pwd 即可。

示例:

[root@foundation0 mnt]# cd /var/ftp/pub/
[root@foundation0 pub]# pwd
/var/ftp/pub


<10>.使用 nautilus 以图形方式管理文件

打开文件管理器:

[root@foundation0 Desktop]# nautilus


进入管理器后要想看到隐藏文件(以.开头的文件):

ctrl+h


想要访问远程 ftp 文件目录:

单击“
Connect to Server
”,输入
ftp://XXX.XXX.XXX.XXX


可访问远程 ftp(前提是对方开发了 ftp 服务)

*管理和访问文件我们建议尽量的使用命令行进行处理。

(2).磁盘及文件系统管理命令:

<1>.df 命令

作用:df 命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。

格式
df [options]


主要参数

-s
:对每个 Names 参数只给出占用的数据块总数。

-a
:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示 Names 中的每一个目录及其中的各子目录所占的磁盘块数。

-k
:以 1024 字节为单位列出磁盘空间使用情况。

-x
:跳过在不同文件系统上的目录不予统计。

-l
:计算所有的文件大小,对硬链接文件则计算多次。

-i
:显示 inode 信息而非块使用量。

-h
:以容易理解的格式印出文件系统大小,例如 136KB、24MB、21GB。

-P
:使用 POSIX 输出格式。

-T
:显示文件系统类型。

说明

df 命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。

超级权限用户使用 df 命令时会发现这样的情况:某个分区的容量超过了 100%。这是因为 Linux 系统为超级用户保留了 10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是 110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作.

<2>. mount 和 umount

mount 命令有很多参数,其中大多数都不会在日常工作中用到,mount 命令最常见的用法如下所示:

mount [选项] 设备 目录


其中最常用的选项是 -a,把/etc/fstab 文件中列出的文件系统都挂装上

挂装软驱和光驱的命令比较简单,直接输入以下命令即可:

mount /mnt/cdrommount /mnt/floppy


umount 命令用于卸载一个文件系统,命令的格式如下:

umount [ -f ] directory


其中 directory 是准备卸载的目录名.

umount 命令有一个不足之处 如果文件系统正在使用中 也就是说有人在那个分区上打开了文件,就无法把这个文件系统卸载下来.这时可以使用和- f 参数强制执行卸载操作 当然这种操作可能会造

成用户数据的丢失。如:

umount -f /mnt/cdrom


该命令将强制卸载挂装在/mnt/cdrom 目录下的文件系统

所以我们给出的建议是,最好先退出所要卸载的目录,然后再执行卸载命令。

(二)linux 系统知识:

1.shell 的简介和使用

Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的 Shell 程序与其他应用程序具有同样的效果。

Linux 提供了像 MicrosoftWindows 那样的可视的命令输入界面–X Window 的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就像 Windows 一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。GNOME。每个 Linux 系统的用户可以拥有他自己的用户界面或 Shell,用以满足他们自己专门的 Shell 需要。

同 Linux 本身一样,Shell 也有多种不同的版本。主要有下列版本的 Shell:

Bourne Shell
:是贝尔实验室开发的。

BASH
:是 GNU 的 Bourne Again Shell,是 GNU 操作系统上默认的 shell。

Korn Shell
:是对 Bourne SHell 的发展,在大部分内容上与Bourne Shell 兼容。

C Shell
:是 SUN 公司 Shell 的 BSD 版本。

Z Shell
:The last shell you’ll ever need! Z 是最后一个字母,也就是终极 Shell。它集成了 bash、ksh 的重要特性,同时又增加了自己独有的特性。

shell 的使用之前我们已经介绍了部分命令,然而对于 shell的学习不仅限于此。

在以后的 linux 学习中我们还要接触脚本的编程,让系统的管理变得自动化。

但是前面的命令操作是基石,希望大家能够熟练掌握。

2.使用 man 手册获取帮助

对命令的操作不熟悉时,或者在 C 语言编程对函数的参数有不了解的地方。则需要使用 man 命令进行查找,它有很多个查找类型:

1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]


小提示:在 man 中如果搜索某个关键字,使用“/查找关键字”

快速的进行定位。并且可以按“n”进行下一个的匹配

3.管理系统用户和组

(1).用户及用户组管理命令

<1>. useradd 命令

useradd 命令可以创建一个新的用户帐号,其最基本用法为:

useradd 用户名


如输入以下命令

useradd newuser


系统将创建一个新用户 newuser,该用户的 Home 目录为
/home/newuser


useradd 命令的参数较多,常用的组合为:

useradd 用户名 -g 组名 –G 组名 -d Home 目录名 -p 密码


其中:

-g
指定该用户的首要组

-G
指定该用户的次要组

-d
指定该用户的 Home 目录

-p
指定该用户的密码

如输入以下命令:

useradd oracle –g oinstall –G dba –d /home/oracle –p ora123


系 统 将 创 建 一 个 用 户 oracle , oracle 用 户 的 首 要 组 oinstall,次要组为 dba,Home 目录为/home/oracle,密码为 ora123。

*当要查看系统是否有某个用户的时候,使用命令
id:id 用户名


<2>.userdel 命令

userdel 命令用于删除一个已经存在的帐号,其用法为:

userdel 用户名


<3>.groupadd 命令

groupadd 命令可以创建一个新的用户组,其最基本用法为:

groupadd 组名

如输入以下命令:

groupadd newgroup


系统将创建一个新的用户组 newgroup

<4>.groupdel 命令

groupdel 命令用于删除一个已存在的用户组,其用法为:

groupdel 组名


<5>.passwd 命令

出于系统安全考虑 Linux 系统中的每一个用户除了有其用户名外还有其对应的用户口令,用户可以随时用 passwd 命令改变自己的口令,该命令的一般格式为:

passwd

输入该命令后,按系统提示一次输入密码和密码确认后,即可完成对用户密码的修改.

此外,超级用户还可以修改其他用户的密码,命令如下:

passwd 用户名


<6>.su 命令

su 命令这个命令非常重要,它可以让一个普通用户拥有超级用户或其他用户的权限也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令,如果想要离开当前用户的身份可以键入 exit 命令。su 命令的一般形式为:

su - 用户名


<7>.chown 命令

chown 用于更改某个文件或目录的属主和属组,这个命令也很常用,例如 root 用户把自己的一个文件拷贝给用户 oracle 为了让用户 oracle 能够存取这个文件,root 用户应该把这个文件的属主

设为 oracle 否则用户 oracle 无法存取这个文件。chown 的基本用法为:

chown [用户:组] 文件


举例:

chown oracle:dba text


该命令将 text 文件的属主和属组分别改为 oracle 和 dba。

(4).文件权限(文件权限的意义和修改)

<1>.chmod 命令

使用权限 : 所有使用者

使 用 方 式 :

chmod [-cfvR] [--help] [--version] mode file...


说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。

参数 :

mode:权 限 设 定 字 串 , 格 式 如 下:
[ugoa...][[+-=][rwxX]...][,...]
,其中:

u
表示该档案的拥有者,
g
表示与该档案的拥有者属于同一个群体(group)者,
o
表示其他以外的人,
a
表示这三者皆是。

+
表示增加权限、
-
表示取消权限、
=
表示唯一设定权限。

r
表示可读取,
w
表示可写入,
x
表示可执行,
X
表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

-c
: 若该档案权限确实已经更改,才显示其更改动作

-f
: 若该档案权限无法被更改也不要显示错误讯息

-v
: 显示权限变更的详细资料

-R
: 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

--help
: 显示辅助说明

--version
: 显示版本

范例 :将档案 file1.txt 设为所有人皆可读取 :\

chmod ugo+r file1.txt


将档案 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt


将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt


将 ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py


将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *


此外 chmod 也可以用数字来表示权限如
chmod 777 file


语法为:
chmod abc file


其中 a,b,c 各为一个数字,分别表示 User、Group、及 Other的权限。

r=4,w=2,x=1


若要 rwx 属性则 4+2+1=7;

若要 rw-属性则 4+2=6;

若要 r-x 属性则 4+1=5。

范例:

chmod a=rwx file
chmod 777 file
效果相同。

chmod ug=rwx,o=x file
chmod 771 file
效果相同。

若用
chmod 4755 filename
可使此程序具有 root 的权限

(5).vim 的使用(关键字:快捷键操作)

关于 vim 的使用技巧,这里推荐

《VI 和 VIM 编辑器(第 7 版)(中文版).pdf 》,

在 owncloud 上面有电子版,详细的介绍了 vim 的使用。

练习:自己安装 ctags,并且结合 vim 进行快速的源码阅读。

(三)linux可能遇上的问题

1.制作 yum 源(本地、远程)及 yum 命令的基本操作

(1).WHAT YUM?

yum 是一个软件包管理器,基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

是的,它帮助我们把各种 RPM 包的依赖性解决好了,只需要执行yum 命令安装就可以了,所以很实用。

我们设定好远程 yum 源后,每次在安装某个软件的时候,其实是在本地查询软件的包依赖关系,按照依赖关系在远程的 ftp 服务器下载指定的包,完成安装后删除(系统默认,可保存包)所下载的包。

此时你只需要设置一个配置文件即可,该文件的目录为:

/etc/yum.repos.d/


在这个目录下的文件都是以 repo 为后缀结尾的,例如:
yum.repo


[source]
name=localserver
#baseurl=ftp://192.168.3.252/pub/rhel7.0
baseurl=file:///content/rhel7.0/x86_64/dvd
gpgcheck=0


我们做下解释,第一行为一个源的名称(可以自定义),
name
是对这个源的描述(可以自定义),
baseurl
是 yum 源的指定目录。

如果是远程的 yum 源使用
ftp://
,如果是本地的 yum 源使用
file://
然后加上 yum 源的绝对路径

gpgcheck
决定是否要对所下载的包进行校验,0 为否,1 为是。

(2).制作本地 yum 源:

制作本地 yum 源分为两个步骤:

(1)首先,我们要把 iso 镜像文件挂在到指定的目录中,写入/etc/fstab 文件;

写入的内容与下面内容类似:

/content/rhel7.0/x86_64/isos/rhel-server-7.0-x86_64-dvd.iso
/content/rhel7.0/x86_64/dvd iso9660 loop,ro 0 0


*每次修改完/etc/fstab 中需要执行命令 mount -a;

(2)然后在/etc/yum.repos.d/yum.repo 文件中写入 baseurl参数中。

*每次修改完 repo 文件,请执行 yum clean all 命令进行刷新。

关于 yum 的基本操作有以下几个命令:

查看所有安装包的列表

yum list


查看命令是何种包支持的
yum whatprovides 命令


安装包
yum install 包


删除安装过的包
yum remove 包


再次安装包
yum reinstall 包


组安装
yum groupinstall 包


组删除
yum groupremove 包


2.图形界面和字符界面切换

1.redhat7 的图形界面和 6 有着比较大的区别,它将之前的几个目录集和到了 Applications 里边,大家可以尝试着里边的应用,图形界面我们不做过多的解释。

图形界面和字符界面的切换:

//图形---->字符:
[root@foundation0 yum.repos.d]# init 3
//字符---->图形:
[root@foundation0 yum.repos.d]# init 5


如果我们想要修改系统的开机默认界面,redhat6 和 7 的方法有区别:

redhat6 修改开机启动界面:

编辑/etc/inittab 文件,在最末尾设置开机级别,0-6 七个级别。

redhat7 修改开机启动界面:

查看/etc/inittab 文件如下所示:

# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To set a default target, run:
#
#
ln -sf /lib/systemd/system/<target name>.target/etc/systemd/system/default.target


可以看到图形界面和字符界面对应的参数分别为:

graphical.target(5)和 multi-user.tartget(3)
开机默认为图形界面:
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
开机默认为字符界面:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target


3.归档和压缩(关键字:tar 命令)

这个就是我们 windows 当中的压缩和解压缩,要求我们要熟悉 tar 命令。

关于 tar 命令的解释,网上有很多博客介绍到了:

http://blog.csdn.net/ericbaner/article/details/3966741

关于解压缩除了 tar 之外,我们有时还需要解压 zip 和 rar 压缩包:

1)对于.ziplinux 下提供了 zip 和 unzip 程序,zip 是压缩程序,unzip 是

解压程序。它们的参数选项很多,

这里只做简单介绍,依旧举例说明一下其用法:

zip all.zip *.jpg


这条命令是将所有.jpg 的文件压缩成一个 zip 包

unzip all.zip


这条命令是将 all.zip 中的所有文件解压出来

2)对于.rar

要在 linux 下处理.rar 文件,需要安装 RAR for Linux,可以从

网上下载,但要记住,RAR for Linux 不是免费的;然后安装:

# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make


这样就安装好了,安装后就有了 rar 和 unrar 这两个程序,rar

是压缩程序,unrar 是解压程序。

它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其

用法:
# rar a all *.jpg


这条命令是将所有.jpg 的文件压缩成一个 rar 包,

名为 all.rar,

该程序会将.rar

扩展名将自动附加到包名后。

# unrar e all.rar


这条命令是将 all.rar 中的所有文件解压出来

4.查看管理系统进程熟练掌握以下命令:

ps aux
top
kill


我们可以通过上述的命令关闭某些进程;找到系统所占用资源最

大的进程;找到指定的进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息