Linux基础第二部分。done

Linux 常用操作命令

文本内容显示

cat 显示文本文件,也可以把几个文件内容附加到另一个文件中,若没有指定文件或为-,则从标准输入读取。cat -n t1>t2把t1文件的内容加上行号后输入到t2文件中。cat >mm.txt<<EOF创建mm.txt,输入EOF结束创建。

more 分页显示文本文件,空格键显示下一页内容,b键返回显示上一页内容。more -s tfile tfile中有两行以上的空白行,以一行显示。 more -2 /file 一次显示两行文件中的内容。

less 回卷显示文本文件的内容,不同于more,其允许使用者往回卷动。

head 显示指定文件的前若干行文件内容,默认为前10行。 head -3 psasd 查看psasd的前3行数据内容。

tail 查看文件末尾数据,默认是最后10行,tail -3 pqq pqq的末尾3行数据内容。

文本内容处理

sort 对文件中的数据进行排序并将结果显示在输出。sort -r file 倒排文件file

uniq 将文件内重复行数据从输出文件删除,只留下每条记录的唯一样本。uniq -d file 查看file中重复数据,uniq -u file 查看file中不重复的内容。

cut 从文件每行中显示出选定的字节-b、字符-c或字段-f,cut -f 1,5 -d:passwd 显示passwd中用户登录名和用户名1-5字段,用冒号隔开。

comm 比较两个已排过序的文件,并将其结果显示处理 comm -1(不输出文件1特有的行),-2 (不输出文件2特有的行),-3(不输出两个文件共有的行),若无选项则输出三列:第一列输出文件1中特有的行,第二列输出文件2中特有的行,第三列输出两个文件中共有的行。comm -12 file1 file2 显示file1,2中共同的行

diff 逐行比较两个文本文件,列出其不同之处。diff file1 file2

文件和命令查找

grep 查找文件中符合条件的字符串, grep ^b aa 在aa文件中找出以b开头的行内容。

find 列出文件系统内符合条件的文件,可以指定文件的名称、类别、时间、大小以及权限等不同信息的组合,只有完全相符的文件才会被列出来。find /boot -name ‘*.con’ 在/boot目录下寻找所有以.con结尾的文件

locate 在数据库(/var/lib/mlocate/mlocate.db)来查找文件,此数据库每天由cron程序来建立,比find的速度快。locate -c h.conf 显示找到了几个h.conf文件

系统信息显示

uname 显示计算机以及操作系统的相关信息 uname -r显示内核发行号,-m 显示计算机硬件架构名称,-a显示所有信息

hostname 显示或修改计算机主机名 ,hostname 主机名,设置主机名,hostname显示格式化主机名。

free 显示系统的物理内存和swap的使用情况,free -m以MB为单位查看使用情况,-t显示总容量。

du 显示目录或文件的磁盘占用量,若没有给出目录或文件名称就显示当前目录,du -sh /root 以MB为单位显示/root目录磁盘占用量。

日期和时间

cal 显示计算机系统的日历,cal -m以星期一为每周第一天的方式显示本月的日历,-jy以1月1日起的天数显示今年的年历。

date 显示和设置计算机系统的日期和时间,超级用户才能设置日期和时间,一般用户只能显示日期和时间。date 选项 ‘%H%M’

hwclock 查看和设置硬件时钟,显示现在时钟,调整硬件时钟,-w将系统时间设置成与硬件时钟一致,-s把系统时间回存到硬件时钟。

信息交流

echo 在显示器上显示文字,起到提示的作用。echo 字符串/”字符串“

mesg 允许或拒绝写消息,控制系统中其他用户是否可以用write或talk向自己发消息,不带选项的为显示当前主机消息许可, mesg n 只允许root用户发送消息到自己的主机。

wall 对全部已登录的用户发消息 wall ‘消息内容’

write 向用户发消息,write root tty3 向tty3终端上的root用户发消息。按ctrl+c退出发送状态

其他命令

clear 清楚屏幕上的信息

uptime 显示系统已经运行了多层时间,依次显示现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。


Shell编程

Shell编程或Shell脚本或Shell程序文件可以提高输入命令的效率

熟悉Shell程序的创建

Shell程序基本语法:由开头部分,注释部分以及语句执行部分组成

Shell必须以#!/bin/bash开头#!用来告诉系统它后面的参数是用来执行该文件的程序,要使用/bin/bash来执行程序.同时要使脚本可以运行,还需赋予该文件可执行的权限,chmod u+x 文件名

注释 以# 开头的句子表示注释

在Shell程序中可以输入多行命令以得到命令的结果信息.

Shell程序的创建过程:Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux系统一个接着一个地解释和执行每个命令,这个Windows系统下地批处理程序非常相似.

创建文件->设置可执行权限->执行Shell曾向,输入完整路径指向Shell程序,或者使用bash 完整路径来指向

Shell变量

所有变量的取值都是一个字符,$var的形式来引用名为var的变量的值

Shell可以自定义环境变量

用户定义的变量变量名=变量值.在定义变量时变量名前不加符号$,在引用变量内容的时候则应该在变量名前加.在赋值的时候等号两边不能留空格,若变量本身包含空格要用双引号包起来.

若是不准备改变变量的只需要readoonly 变量名,来保证变量的只读性

export 变量名,可以将一个局部变量提供给Shell使用

位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数.

预定义变量是在Shell一开始时就定义了的变量,

$#位置参数的数量
$*所有位置参数的内容
$?命令执行后返回的状态,0表示没有错误,非0表示有错误
$$当前进程的进程号
$!后台运行的最后一个进程号
$0当前执行的进程名

参数置换变量:Shell提供参数置换功能以便用户可以根据不同的条件来给变量赋不同的值.

1.变量=${参数-word}
•如果设置了参数,则用参数的值置换变量的值,否则用word置换,即这种变量的值等于某一个参数的值。如果该参数没有设置,则变量就等于word值。
2.变量=${参数=word}
•如果设置了参数,则用参数的值置换变量的值,否则把变量设置成word,然后再用word替换参数的值。位置参数不能用于这种方式,因为在shell程序中不能为位置参数赋值。
3.变量=${参数?word}
•如果设置了参数,则用参数的值置换变量的值,否则就显示word并从shell中退出,如果省略了word,则显示标准信息。这种变量要求一定等于某一个参数的值。如果该参数没有设置,就显示一个信息,然后退出,这种方式常用于出错指示。
4.变量=${参数+word}
•如果设置了参数,则用word置换变量,否则不进行置换。

变量表达式

test通常与if等条件语句结合 : test 表达式

字符串的比较

=比较两个字符串是否相同,相同则为“是”
!=比较两个字符串是否相同,不同则为“是”
-n比较字符串的长度是否大于0,如果大于0则为“是”
-z比较字符串的长度是否等于0,如果等于0则为“是”

数字比较:

-eq相等
-ge大于等于
-le小于等于
-ne不等于
-gt大于
-lt小于

逻辑测试:

!与一个逻辑值相反的逻辑值
-a两个逻辑值为“是”返回值才为“是”,反之为“否”
-o两个逻辑值有一个为“是”,返回值就为“是”

文件操作:

-d对象存在且为目录则返回值为“是”
-f对象存在且为文件则返回值为“是”
-L对象存在且为符号链接则返回值为“是”
-r对象存在且可读,则返回值为“是”
-s对象存在且长度非0则返回值为“是”
-w对象存在且可写,则返回值为“是”
-x对象存在且可执行,则返回值为“是”
!测试条件的否定

Shell条件判断语句

if-then-fi

if 命令行1
then
命令行2
fi

if-then-else-fi

if
命令行1
then
命令行2
else
命令行3
fi

case语句

case string in
exp-1)
若干个命令行1
;;
exp-2)
若干个命令行2
;;

*)
其它命令行
esac

Shell循环控制语句

for循环语句的语法格式如下所示。
for 变量名
[in数值列表]
do
若干个命令行
done

While语句是用命令的返回状态值来控制循环的。
语法格式:
while
若干个命令行1
do
若干个命令行2
done
只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行“do…done”之间的“若干个命令行2”

until循环语句

until
若干个命令行1
do
若干个命令行2
done

while循环在条件为真继续执行,而until则是在条件为假的状态继续执行.


用户和组群账户管理

用户账户简介

root用户是系统得最高管理者,其用户得UID是0级,与用户和组账户得相关配置文件有/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow

用户账户设置

/etc/passwd,/etc/shadow

用户的角色是由UID来标识的,每个用户的UID都不同,有三大类用户,分别是root用户,系统用户和普通用户。

root用户

权限最高,系统中的每个文件、目录和进程都归属于某一个用户,没有改用户的操作,其它普通用户无法操作,但是root除外。

系统用户

也称为虚拟用户、伪用户或假用户,这类用户不具有登录Linux系统的能力,但却是系统运行不可缺少的用户,UID从1-999.如:bin,adm,ftp,mail。。

普通用户

这类用户能登录系统,在Linux系统上进行普通操作,能操作自己目录的内容,这类用户都是系统管理员创建UID从100-60000

/etc/passwd

是系统识别用户的重要文件,系统会首先检查此文件,看看是否有该用户,然后缺点其UID,若存在则读取/etc/shadow文件中对应的密码。若密码无误则登录系统,读取用户的配置文件。

任何文件都可以读取其文件内容

zhangsan​ :x:1000:1000:张三:/home/zhangsan:/bin/bash

用户名:密码(映射到了/etc/shadow文件中了):用户标识号UID:组群标识号GID:用户全名称可为空:主目录(用户登录系统首先进入的目录):登录Shell(用户使用的Shell类型,默认是/bin/bash)

/etc/shadow文件是/etc/passwd的影子文件,这两个文件应该是互补的。此文件只有root用户可以读取和操作。

zhangsan: 6 6 6E/4e0:16364:0:99999:7:::

用户名:加密密码(若为!!则表示该用户还没有设置密码,不能登录到系统):用户最后一次更改密码的日期(从1970年1月1日到最后一次修改密码的天数):用户密码允许更换前的天数(设置0禁用此功能,可以更改密码的天数):密码需要更换的天数(设置0,禁用此功能,指其必须更改密码的天数):账户被取消激活前的天数(系统过期多少天后系统会禁用此用户):用户账户过期日期(若为空可永久保存):保留字段

useradd创建用户账户:为新账户分配UID,组群,主目录,登录Shell等资源。新用户默认锁定,需要设置密码才能使用。

useradd zhangsan创建张三;useradd -u 1010 moon 创建用户moon其UID为1010;useradd -d /home/ww nuser 设置nuser主目录为/home/ww;useradd -g root pp 创建用户pp并指定该用户属于组群root成员。useradd -s /bin/ksh abc创建用户abc并设置该用户的Shell类型是/bin/ksh

passwd zhangsan设置张三密码

usermod修改用户账户,可以更改用户的Shell类型、所属组群、用户密码的有效期,还能更改用户的登录名。usermod -d /home/k zs 给zs设置其目录为/home/k;usermod -l zhao zs 将zs的登录名设置为zhao;usermod -c 张三 zs 修改zs的全称为张三。usermod -f 20 zs修改zs在密码过期20天后禁用;usermod -g root sun 修改sun所属组群为root 该组群必须事先存在;usermod -L zs 锁住zs密码;usermod -U zs 解除zs的锁定;usermod -e 12/12/2012 zs设置zs账户的过期时间为2012/12/12;usermod -s /bin/ksh zs 修改zs的shell 类型为/bin/ksh

userdel删除用户账户甚至连用户的主目录一起删除,userdel zs 删除用户zs

组群账户简介

/etc/group和/etc/gshadow

具有某种共同特征的用户集合就是组群,通过组群可以集中设置访问权限和分配管理任务。

私有组群:当新建账户时若没指定属于哪个组群,则会创建其同名的组群,这个组群就是私有组群,在这个私有组群中只包含这个用户。

标准组群:也称普通组群,包含多个用户账户,在创建一个新的用户账户时,应该指定该用户属于哪一个组群。

主要组群:当一个用户账户属于多个组成员的时候,登录后所属的组群便是主要群组,其他是次要组群,一个用户只能属于一个主要组群。

次要组群:也称附加组群,一个用户账户可以属于多个次要群组。

/etc/group,是组群的配置文件,内容包括用户和组群,并且能显示出用户是归属哪个组群或哪一个组群。同一个组群的用户之间具有相似的特征

zhangsan:x:1000:

组群名:组群密码(/etc/gshadow文件中存储):GID组群表示号(普通组群从1000开始,rootGID是0):组群成员

/etc/gshadow是/etc/group的加密文件,组群密码就说存放在这个文件文件中。设置组群密码可以使得不想让一些非组群成员拥有组群的权限和特性,可以通过密码验证的方式来让某些用户临时拥有一些组群特性。

beijing: 6 6 6E/xvWMmh$rhYLQwwffEqIudVLFzMlv1: :ou

组群名:族群密码(!表示没有密码):组群管理者(有权添加、删除用户):组群成员多个用户用逗号分隔。

组群账户设置

groupadd:创建组群账户groupadd ch 创一个ch组群;groupadd -g 1800 ou 创一个叫ouGID为1800的组群;groupadd -r ch 创一个系统组群ch

groupmod:修改组群账户groupmod -g 1900 ou将ou的GID修改为1900;groupmod -n shanghai ou 将ou名称改为上海。

groupdel:删除组群账户,若包括某些用户,必须先删除这些用户才能删除组群

groupdel sh 删除sh组群

用户和组群账户维护

passwd:设置或修改用户密码,普通用户只能更改自己的密码,root用户可以设置或修改任何用户的密码。若不跟任何选项和用户名表示修改当前用户的密码。

passwd it 设置用户it 的密码 ;passwd -l it 锁住it的密码,气候it不能登录到系统但是可以su切换到it;passed -S it 查看it用户的状态 ;passwd -u it 解锁it密码;passwd -d it 删除it的密码。

gpasswd:设置一个组群的密码或者在组群中添加、删除用户;gpasswd -a it kk 将it用户添加kk组群中;gpasswd -d it kk 从kk组群中删除用户it;gpasswd kk设置kk组群的密码;gpasswd -r kk 取消kk组群密码

su:使用su命令可以切换到其它用户账户进行登录。如果su不加任何选项默认到root用户,并且不改变Shell环境。su - it从root切换到普通用户不需要输入密码;su -root -c “ls /root”用户ir使用su方式以root用户执行“ls/root”命令

newgrp:让用户账户以另一个组群的身份登录,用户要属于该组群,若不指定组群名称,newgrp会登录该用户名预设的组群。id 显示当前用户id信息。newgrp ou 以ou身份登录系统。

groups:可以显示指定用户账户的组群成员身份;groups ab 查看ab属于哪些组群的成员。

id:可以显示用户的UID以及该用户所属组群的GID。 id -g ab 查看ab所属的组群GID


磁盘分区和文件系统管理

磁盘分区和格式化简介

在Linux系统中,如果需要在某个磁盘上存储数据,则需要将磁盘进行分区,然后创建文件系统,最后将文件系统挂载到目录下才可以.在安装Linux系统后需要添加更多的交换空间,可以通过添加一个交换分区或添加一个交换文件来实现.

磁盘分区:对硬盘物理介质的逻辑划分.分区就是磁盘的段落.

磁盘分区种类:主分区,扩展分区,逻辑驱动器.扩展分区只不过是逻辑驱动器的容器.存储数据的是主分区和逻辑驱动器.在一块磁盘上最多只能由四个主分区,可以另外建立一个扩展分区来代替四个主分区的一个,然后再扩展分区下建立更多的逻辑驱动器.

格式化:再磁盘中建立磁道和扇区,建立好后,计算机才可以使用磁盘来存储数据.格式化的动作通常是在磁盘的开端写入启动扇区的数据,在根目录记录磁盘卷标,为文件分配表保留一些空间,以及检查磁盘上是否有损坏的扇区.

Linux支持最多的是xfs和ext4

Linux 磁盘分区

fdisk可以用来对磁盘进行分区,除此之外还可以用来查看磁盘分区的详细信息,也能为每个分区指定分区的类型.交互式操作

m显示所有能在fdisk中使用的子命令;p显示磁盘分区信息;;a设置磁盘启动分区;n创建新的分区;e创建扩展分区;p创建主分区;t更改分区的系统ID(也就是分区类型ID);d删除磁盘分区;q退出fdisk,不保存磁盘分区设置;l列出已知的分区类型;v验证分区表;w保存磁盘分区设置并退出fdisk

83 Linux Linux普通分区
fd Linux raid 自动 RAID使用的分区
8e Linux LVM LVM使用的分区
82 Linux swap / Solaris swap分区

硬盘分区过程:

  1. 进入fdisk界面,显示磁盘分区信息
  2. 创建和删除主分区
  3. 创建扩展分区和逻辑驱动器
  4. 查看并转换分区类型
  5. 保存分区设置信息,并退出fdisk
  6. 在非交互式界面下显示当前硬盘的分区信息
  7. 查看分区情况(使用partprobe命令更新分区表,使内核识别分区)

创建文件系统

首先需要确定文件系统的类型,然后才能通过挂载使用,通过mount加载或者通过修改/etc/fstab文件开机自动加载.

Linux支持的文件系统类型:XFS,ext4,JFS,ReiserFS,ext2,ext3,ISO9660,MSDOS,VFAT,NFS等.

mkfs命令可以在分区上创建各种文件系统.最好是xfs或ext4

mkfs -t ext4 /dev/sda5对计算机硬盘分好区后用此命令创建ext4文件系统.

挂载和卸载文件系统

mount可以将指定分区,光盘,U盘或者是移动硬盘挂载到Linux目录下,mount /dev/sda5 /mnt/kk将/sad5挂载到/mnt/kk目录下;mount -o ro /dev/sda5 /mnt/kk 以只读方式挂载/dev/sda5分区

umount将指定分区进行卸载.除了直接指定文件系统外,也可以使用设备名称或挂载目录来表示文件系统. umount /dev/sda5卸载分区/dev/sda5

df命令显示每个文件所在文件系统的信息.默认使显示所有文件系统.检查文件系统的磁盘空间使用情况,硬盘使用了多少空间,目前还剩下多少空间等相关信息.

开机自动挂载文件系统

只有将某个分区或是设备挂载以后才能使用,但是当计算机重新启动以后,又需要重新挂载,这个时候可以通过修改/etc/fstab文件实现开机自动挂载文件系统.

/etc/fstab文件使一个简单的文本文件,每一行/dev/sda5 /mnt/kk ext4 defaults 0 0;设备 挂载目录 文件系统类型 挂载选项(auto和noauto user和nouser exec和noexec ro rw sync和async defaults owner) 转储选项(0表示不需要备份) 文件系统检查选项(0 是fsck不检查,根文件系统/默认值为1,其它文件系统可以为2-9)

使用交换空间

Linux系统中的交换空间在物理内存被用完时使用。如果系统需要更多的内存资源,而物理内存已经用完,内存中不活跃的页就会被转移到交换空间中。虽然交换空间可以为带有少量内存的计算机提供帮助,但是这种方法不应该被当做是对内存的取代。

交换空间的大小一般为物理内存的1~2倍左右.

添加交换分区,

  1. mkswap /dev/sda5 将sda5分区创建为交换分区.
  2. swapon /dev/sda5启用交换分区,
  3. 若是要在系统引导时启用交换分区,需要编辑/etc/fstab文件:/dev/sda5 swap swap defaults 0 0;
  4. 删除交换分区 swapoff /dev/sda5 ,再删除/etc/fstab文件

使用交换文件:

使用free命令查看分区情况

  1. 创建/swapfile文件:dd if=/dev/zero of=/swapfile bs=1024 count=66536
  2. 创建交换文件mkswap /swapfile
  3. 启用交换文件 swapon /swapfile
  4. 编辑/etc/fstab文件使得系统引导时启用交换文件,/swapfile swap swap defaults 0 0
  5. 删除交换文件swapoff /swapfile
  6. 删除/swapfile文件 rm -rf /swapfile
  7. 编辑/etc/fstab文件

软件包管理

RPM软件包管理

RPM简化了Linux系统安装、卸载、更新和升级的过程,只需要使用简短的命令就可完成。RPM维护了一个已经安装软件报和它们的文件的数据库,因此可以在系统上使用查询和校验软件包的功能。Linux系统上的所有软件都被分成可悲安装、升级或卸载的RPM软件包。

可以安装、删除、升级、刷新和管理RPM软件包; 通过RPM软件包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个RPM软件包; 可以查询系统中的RPM软件包是否安装并查询其安装的版本;开发者可以把自己的程序打包为RPM软件包并发布;软件包签名GPG和MD5的导入、验证和签名发布; 依赖性的检查,查看是否有RPM软件包由于不兼容而扰乱系统。

安装RPM软件包:rpm -ivh RPM软件包名称。

删除RPM软件包:rpm -e RPM软件包名称。

刷新RPM软件包:rpm -Fvh RPM软件包名称;会升级到新版本,若软件包先前没有安装则不会安装。

升级RPM软件包:rpm -Uvh RPM软件包名称 ;是删除和安装的组合,删除早期的版本安装新版本(不管早期版本是否被安装)。

查询RPM软件包:rpm -q RPM软件包;查询该软件包是否已经被安装。rpm -qa 查询所有已经安装的RPM软件包。rpm -qi RPM包名称 查询软件包的描述信息。rpm -ql RPM包名称 查询指定已安装的RPM软件包所包含的文件列表。rom -qR RPM包名称 查询RPM软件包的依赖关系;rpm -qf 文件名,查询系统中文件属于哪个RPM软件包

使用yum管理RPM软件包

yum宗旨是自动化地升级\安装和删除RPM软件包,收集RPM软件包的相关信息,检查依赖性并且一次安装所有依赖的软件包,无须繁琐的一次次安装.yum的关键之处是要有可靠的软件仓库,可以是HTTP站点,FTP站点或者本地软件池都必须包含rpm的header,header包括了RPM软件包的各种信息,包括描述,功能提供的文件以及依赖性等.

yum的特点:可以同时配置多个软件仓库,简介的配置文件/etc/yum.conf;自动解决安装或者删除RPM软件包时遇到的依赖性问题.使用yum非常方便,保持与RPM数据库的一致性.

yum help 显示使用信息,yum list 列出软件包,yum search keyword 搜索关键字,yum info packagename 列出软件包详细信息,yum install/remove/update packagename 安装/删除/升级软件包.

yum grouplist 列出所有可用组,yum groupinfo 提供特定组的信息,yum groupinstall 安装软件包组,yum groupupdate 更新软件包组,yum grouprase 删除软件包组.

tar包管理

tar可以为文件和目录创建备份,利用tar 命令用户可以为某一特定文件创建备份,也可以在备份中改变文件,或者向备份中加入新的文件.

tar cvf abc.tar /root/abc 备份/root/abc 目录及其子目录下的全部文件,备份文件名为abc.tar;tar tcf abc.tar 查看abc.tar备份文件的内容并显示出.tar xvf abc.tar 解压abc.tar;tar rvf abc.tar /root/bb 将/root/bb加入到abc.tar中.tar uvf abc.tar /root/abc/d 更新原来的文件.

使用tar 命令可以在打包或解包的同时调用其它压缩程序,如gzip,bzip2,和xz 等.1

tar acvf abc.tar.gz /root/abc 将/root/abc目录包括其子目录全部做备份文件并进行压缩为abc.tar.gz. tar ztcf abc.tar.gz 查看压缩文件abc.tar.gz的内容并显示.tar zxvf abc.tar.gz 解压abc.tar.gz

tar jcvf abc.tar.bz2 /root/abc,压缩.tar jtvf abc.tar.bz2 查看,tar jxvf abc.tar.bz2解压缩

tar Jcvf abc.tar.xz /root/abc,压缩.tar Jtvf abc.tar.xz 查看,tar Jxvf abc.tar.xz解压缩


权限和所有者

权限设置

三种用户:文件的用户所有者(属主) 文件的组群所有者(用户所在组的通过组用户) 系统中的其它用户.

三种权限:读取权限r,写入权限w,执行权限x,不具有权限-.第一套权限控制自己的文件权限即所有者权限,第二套权限控制用户组访问其中一个用户的文件的权限,第三套权限控制其它所有用户访问一个用户的文件的权限.

drwx–x--x 目录的用户所有者具有读写和进入目录权限,其它用户能进入目录,却无法读取任何数据

-rw-rw-r-x 用户所有者和组群所有者对文件具有读取、写入权限,而其它用户只具有读取和执行权限

ls -l 可以显示文件的详细信息,其中包括权限

-rw-r–r--. 1 root root 44934 Dec 11 2012 install.log

权限 连接数量 用户 组 大小 时间 文件名.

文字设定法设定权限:

chmod u(文件所有者)/g(组群所有者)/o(其它用户)/a(所有用户) +(添加某个权限)/-(取消某个权限)/=(赋予给定的权限并取消原先权限) 权限(rwx) 文件/目录

chmod u+w a 对a的所有者添加写入权限

数字设定法设定权限:

0代表没权限,1表示可执行,2表示写入权限,4表示读取权限,每位数字相加

-rw-rw-r-x:用数字表示为665
drwx–x--x:用数字表示为711

chmod n1n2n3 文件/目录

n1表示用户所有者的权限,n2表示组群所有者的权限,n3表示其它用户的权限.

chmod 470 a 设置为所有者读取,同组读写执行,其它无 -r–rwx—

chmod -R 设置目录连同他的子文件夹的权限.

三种特殊权限:

SUID:对一个可执行文件不是以发起者的身份来获取资源,而是以可执行文件的用户所有者身份来执行,对目录无影响.

SGID:对一个可执行文件,不是以发起者的身份来获取资源,而是以可执行文件的组群所有者的身份来执行,对一个目录,在该目录中创建的任意新闻界的所属组与该目录的所属组相同.

Sticky:对一个可执行文件无影响,对目录设置Stichy之后,尽管其它用户有写权限,也必须由文件所有者执行删除和移动等操作.

文字设定法来设定权限

SUID chmod u+s SGID chmod g+s Sticky chmod o+t

chmod g+s a 给a设定特殊权限SGID.

数字设定法来设定权限:

SUID 4 SGID 2 Sticky 1

chmod 7000 a 设置文件a 具有SUID,SGID和Stichy权限

更改文件和目录所有者

chown可以更改文件的目录和用户所有者和组群所有者

chown newuser a 目前a文件的用户组是newuser

chown :newuser a 目前a的用户组为newuser

chown root.root a a文件的所有者和用户组都是a

chown -R newuser.newuser /root/b 将/root/b的所有内容的所有者和用户组都改为newuser


Linux日常管理和维护

进程管理

正在执行的一个或多个相关进程称为一个作业,用户可以同时允许多个作业,并在需要时可以在作业之间进行切换.

Linux系统上所有运行的内容都可以称为进程.每个用户任务,每个系统管理守护进程都可以称为进程.Linux系统用分时管理方法使所有任务共享系统资源.进程是在自身的虚拟地址空间运行的一个单独的程序,程序只是一个静态的命令集合,不占系统的运行资源,而进程是一个随时都可能发送变化的动态的,使用系统运行资源的程序.

进程的特性:动态性,并发现,独立性,异步性,结构特性.(进程由程序,数据和进程控制块三部分组成)

进程种类:交互式进程(一个由Shell启动并控制的进程,交互式进程即可在前台运行,也可在后台运行,交互式进程既可在前台运行,也可在后台运行),批处理进程(与终端无关,安排在指定时刻完成一系列进程),守护进程(在引导系统时启动,以执行即时的操作系统任务,比如crond,rsyslogd,named)

ps命令是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行以及进程运行的状态,进程是否结束,进程有没有僵死,以及哪些进程占用了过多的资源等.ps -e(显示所有进程) -aux(显示所有不带控制台终端的进程并显示用户名和进程的起始时间);ps -u root 显示用户root的进程;ps -t tty1 显示tty1终端下的进程,ps -p 1658 显示进程号为1658的进程.

top命令可以显示当前正在运行的进程以及关于它们的重要信息,包括它们的内存和CPU使用量.并通过它所提供的互动式界面,用热键加以管理.要退出top需要按q键.

kill命令安装进程号杀死进程.kill -9 1659 强制杀死进程号1659的进程

任务计划

如果要在固定的时间上触发某个作业就需要创建任务计划,按时执行该作业,使用cron实现该功能.可以通过修改/etc/crontab文件以及使用crontab命令实现,结果是一样的.

/etc/crontab文件每一行格式minute hour day month dayofweek(0~7,其中0和7表示周日) user-name commands

时间格式 *可以用来代表所有有效的值。如月份值中的星号意味着在满足其它制约条件后每月都执行该命令.-指定一个整数范围。比如1-4意味着整数1、2、3、4.,指定隔开的一系列值指定一个列表。比如3,4,6,8标明这4个指定的整数./可以用来指定间隔频率。在范围后加上/ 意味着在范围内可以跳过integer。如“0-59/2”可以用来在分钟字段上定义时间间隔为两分钟。间隔频率值还可以和星号一起使用,

30 21* * * root /root/backup.sh//在每天晚上的21:30执行/root/backup.sh文件
45 4 1,10,22 * * root /root/backup.sh//在每月1、10、22日的4:45执行/root/backup.sh文件

也可在/etc/cron.d目录中创建文件来实现,该目录中所有文件和/etc/crontab文件使用的语法一样.

root以外的用户可以使用crontab命令配置cron任务.所有用户定义的crontab都被保存在/var/spool/cron目录中,并使用创建它们的用户身份来执行.用户创建了一个crontab项目输入crontab -e命令,使用由VISUAL或EDITOR环境变量指定的编辑器来编辑该用户的crontab.该文件使用的格式和/etc/crontab相同.当对crontab所作的改变被保存后,该crontab文件会根据该用户名被保存在/var/spool/cron/用户名文件中.crond守护进程每分钟都检查,/etc/crontab文件,/etc/cron.d目录,以及/var/spool/cron目录中的改变,如果发现改变就会被载入内存.

crontab命令可以创建,修改,查看以及删除crontab条目.crontab -e 打开vi编辑器进行编辑.

如果希望添加,删除或编辑/var/spool/cron/用户名可以使用vi编辑器进行操作.

crontab -u 用户名 -l 列出用户名的crontab ;crontab -l列出自己的crontab

crontab -u 用户名 -r 删除用户名的crontab;crontab -r删除自己的crontab

crontab 文件 直接恢复crontab文件

Linux系统启动过程

  1. BIOS自检
  2. 启动GRUB2:GRUB2 是Linux系统中默认使用的银弹加载程序,用于引导操作系统启动.
  3. 加载内核:加载内核映像到内存
  4. 执行systemd进程:systemd进程是系统所有进程的起点.是所有进程的发起者核控制着
  5. 初始化系统环境
  6. 执行/bin/login程序:登录

维护GRUB2

设置GRUB2加密

GRUB2配置案例


Linux网络基本配置

常用网络配置文件

/etc/sysconfig/network-scripts目录下保存着系统网络设备的配置文件,ifcfg-lo包含回路IP地址信息。

/etc/resolv.conf文件是由域名解析器使用的配置文件,

/etc/hosts储存着一些主机名到IP地址的匹配,在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。

/etc/services文件定义了Linux系统中所有服务的名称、协议类型、服务的端口等信息。

常用网络命令

traceroute:可以显示数据包到目标主机之间的路径。预设IPV4数据包大小是60字节用户可另外设置。traceroute 主机名 数据包大小

ifconfig:可以显示和配置网络接口,比如IP地址、MAC地址、激活或关闭网络接口,ifconfig 接口 ip地址

ping:用来测试与目标计算机之间的连通性。ping -s 128 192.168.0.222 -s设定数据包大小

netstat:用来显示网络状态的信息,得知整个Linux系统的网络情况,比如网络连接、路由表、接口统计、伪装连接和组播成员。-r显示内核路由表信息,netstat -antu|grep 22 显示端口号为22的连接情况。-u 显示UDP 传输协议的连接状态。

arp:可以用来增加、删除和现实ARP缓存条目 -s添加一个IP地址 -d删除

tcpdump:将网络中传送的数据包的头完全截获下来提供分析。tcpdump -i 网络接口

管理网络服务

systemctl 控制单元需要使用单元文件的全名,若没有指定扩展名,则systemctl默认把扩展名当作.service.

systemctl start(启动)/status(查看当前状态)/stop(停止)/restart(重新启动)/reload(重新加载)/enable(开机自动启动)/is-enable(查看是否开机自启动)/disable(停止开机自启动) …service

systemctl list-units --type=service 查看所有已启动的服务.


远程连接服务器配置

SSH和OpenSSH简介

SSH是由IETF的网络工作小组所制定,为建立在应用层和传输层基础上的安全协议。

telnet和ftp使用纯文本口令,并以明文发送。这些信息可能会被截取,口令可能会被检索,未经授权的人员可能会使用截取的口令登录用户的系统,而对系统产生危害,所以应该尽可能使用OpenSSH工具来避免这些安全问题。

ssh (-l) 用户 主机 (命令);ssh root@192.168.0.100 ls /boot以root账户连接到远程主机192.168.0.100 执行 ls /boot

scp 命令可以通过安全加密的连接在不同的主机之间传输文件与rcp类似

scp /root/a root@192.168.0.100:/root/b用root账户把本地文件/root/a传送到192.168.0.100远程主机/root并改名为/b

OpenSSH服务器安装和配置

配置OpenSSH客户端

VNC服务器配置

VNC虚拟网络计算,允许用户在网络的任何地方使用简单的程序来和一个特定的计算机(服务器)进行交互.

连接VNC服务器


NFS服务器配置

NFS简介

通过配置NFS服务器可以让客户机挂载NFS服务器上的共享目录、文件就如同位于客户机的本地硬盘上一样。

NFS网络文件系统,使用RPC协议,NFS是一个文件系统,而RPC是负责信息的出阿叔。NFS主要管理分享出来的目录,而至于文件的传递,就直接将它交给RPC协议来运作。NFS只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明,而FTP会产生文件一个完整的副本。

NFS服务器安装和配置

安装NFS服务器软件包 rpm -ivh nfs-utils-1.3.0… .rpm

/etc/exports文件控制着NFS服务器要导出的共享目录以及访问控制。此文件默认是空白的,没有任何内容,NFS服务器默认不共享任何目录,需要手工编辑添加,此文件内容的格式:共享目录 客户端(导出选项)

共享目录必须使用绝对路径且已经存在。

客户端是指可以NFS服务器共享目录的客户端计算机,可以是一个计算机或网段或域。使用IP地址指定客户端192.168.0.5,使用IP地址指定网段192.168.0.0/24、192.168.0.0/255.255.255.0,使用IP地址指定网段192.168.0.,使用域名指定客户端linux.sh.com,使用域名指定域内所有客户端.sh.com,使用通配符指定所有客户端*。

导出选项:设置客户端访问NFS服务器共享目录的权限,rw共享目录具有读取和写入的权限,ro共享目录具有只读的权限,root_squash root用户的所有请求映射成如anonymous(匿名)用户一样的权限,no_root_squash关闭root_squash,all_squash映射所有的UID和GID为匿名用户,no_all_squash保留共享文件的UID和GID(默认),anonuid指定NFS服务器/etc/passwd文件中匿名用户的UID,anongid指定NFS服务器/etc/passwd文件中匿名用户的GID,sync所有数据在请求时写入共享,在请求所做的改变被写入磁盘之前就不会处理其它请求,适合大量写请求的情况下,asyncNFS在写入数据前可以响应请求,写入和读取可同时进行,由NFS保证其一致性。适合少量写请求并且对数据一致性要求不高的情况下:/it 192.168.0.5(ro,sync)//允许来自主机192.168.0.5的用户以默认的只读权限来挂载/it目录

控制nfs-server服务

systemctl start(启动)/status(查看状态)/stop(停止)/restart(重新启动)/enable(开机自启动) nfs-server.service

管理NFS共享目录

维护NFS共享目录

exportfs可以导出NFS服务器上的共享目录、显示共享目录,或者不导出共享目录,exportfs -v(显示共享目录以及导出选项信息)/-rv(重新导出NFS服务器所有共享目录 )

查看NFS共享目录信息

showmount显示NFS服务器的挂载信息,查看NFS服务器上有哪些共享目录,这些共享目录可以被哪些客户端访问,以及哪些共享目录已经被客户端挂载了,showmount -e 服务器

挂载和卸载NFS共享目录

挂载NFS服务器上的共享目录,可以通过使用mount命令和修改/etc/fstab文件两种方式。修改/etc/fstab文件后会在Linux启动时自动挂载NFS共享目录。

mount -t nfs NFS服务器:NFS共享目录 本地挂载目录

umount 共享目录 卸载NFS服务器上的共享目录。

修改/etc/fstab文件:NFS服务器主机名、要导出的目录、要挂载NFS共享的本地目录

192.168.0.100:/it /mnt/it nfs defaults 0 0


逻辑卷管理

通用LVM概念和数据

LVM逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,它屏蔽了底层磁盘布局,便于动态调整磁盘容量./boot分区用于存放引导文件,不能应用LVM机制.

PV物理卷:整个硬盘或使用fdisk等工具建立的普通分区.包括许多默认4MB大小的PE基本单元.

VG卷组:一个或多个物理卷组合而成的整体

LV逻辑卷:从卷组中分割出的一块空间,用于建立文件系统.

建立逻辑卷

创建逻辑卷步骤

  1. 建立空分区

    新建空分区fdisk -c /dev/vdb

    查看分区fdisk -l

    创建物理卷 pvcreate 设备名

  2. 初始化分区创建PV

  3. 创建卷组 vgcreate -s 块大小 卷组名 物理卷设备名

  4. 创建逻辑卷 lvcreate -n 逻辑卷名 -L逻辑卷大小 已存在卷组名

  5. 格式化逻辑卷 mkfs -t 文件系统类型 逻辑卷设备名

管理逻辑卷

  • 扩大逻辑卷及文件系统

    确定卷组大小是否满足逻辑卷扩展需求

    扩展逻辑卷的容量大小

    lvextend -L 大小 卷组名

    扩展文件系统大小

    resize2fs -p 逻辑卷设备名

  • 缩小逻辑卷及文件系统

    缩小文件系统,注意缩小时,必须将逻辑卷卸载并确定数据用量

    umount 逻辑卷

    lvreduce -L 大小 卷组名

LVM高级应用

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页