在linux 桌面中右键 按e 打开终端
关机命令: 终端中输入init 0 回车
11月24日 下午 (半天)linux 第一天授课内容:
拷贝ISO文件,安装linux 虚拟机操作系统
CentOS
community Enterprise Operation System
安装界面的5个选项说明如下:
1) Install o upgrade an existing system 安装或更新系统
2) Install system with basic video driver 安装系统及基本的显示卡驱动
3) Rescue installed system 系统修复
4) Boot from local drive 从本地硬盘启动
5) Memory test 内存测试
------------------------------------------------------------------
安装CentOS组件选择,共有8个选项
1) Desktop 桌面系统的安装
2) Minimal Desttop 最小化桌面系统的安装
3) Minimal 最小化安装
4) Basic Server 基本服务器的安装
5) Database Server 数据库服务器的安装
6) Web server 网站服务器的安装
7) Virtual Host 虚拟主机的安装
8) Software Development Workstation 软件开发工作站的安装
说明:选择哪种安装方案,linux 系统会自动给安装一些需要的组件
也可以选择最底下的现在自定义,来选择要安装的组件
推荐选择第一个,理由是新手一般熟悉 windows 操作系统和图形界面,上手比较容易
可以等熟练之后,就不用安装桌面的图形界面
----------------------------------------
11月25日(全天) linux 第2天:授课内容:
超级管理员身份 root 登录的用户 是#号提示符
普通管理员身份 登录的用户 是$号提示符
尝试多种版本的linux 安装
1)desktop --桌面版本
basic sever --基本服务器版本
只有命令行模式,没有桌面
date --输出系统当前日期时间
clear --清屏命令
ll --查看所有文件命令(详细模式)
ls --查看所有文件命令(简单模式)
cd xx --进入到xx目录
cp aa/xx bb/xx --复制文件命令
reboot --重启命令(重新引导系统)
init 0 --关机命令
---------------------------------------------
cal 2016 --显示2016年日历表(年份可换)
cal --显示当前月份的日历
cal -y --显示当前年份的全年日历
cal -j --显示当前是全年的第N天日历
cal -yj 年份 --按序数显示全年的天数
如果指定了年份,可查该年份的序数天数
向前翻页命令:
命令 | less 配合上下方向键可以查看滚屏
退出翻页 按 q 键
查看命令 直接按 上下方向键,可以查看命令
more
less
arch -- 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件
cat /proc/cpuinfo 显示cpu info的信息
cat /proc/version 显示内核版本
lspci-tv 显示PCI设备
------------------------------------------
系统操作命令:
telinit 0 关闭系统
init 0 关闭系统
shutdown -h hours:minutes
按预定时间(24小时制时间)关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启系统
reboot 重启系统
logout 注销
---------------------------------------------
目录操作命令:
路径补全
abcd abddef
cd abc+Tab 必须是该路径下目录名前N个字母独一无二,
才可以按tab键补全剩余目录名
cd /home --进入到 /home 目录
cd .. 返回上一级目录
cd ../..返回上两级目录
cd 进入个人主目录
cd - 返回上次所在的目录
pwd --显示工作路径 path work direction
ls --查看目录中的文件
ls -l --显示文件和目录的详细资料 相当于 -ll
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构 ??
alt+(F1-F6) 相当于带编号(1-6)的 真实机alt+Tab
alt+F1 进入第一个控制台(终端),默认提供6个 F1-F6
alt+F1 进入第一个控制台(终端) 随便输入 f1
alt+F2 进入第二个控制台(终端) 随便输入 f2
alt+F3 进入第三个控制台(终端) 随便输入 f3
alt+F4 进入第四个控制台(终端) 随便输入 f4
alt+F5 进入第五个控制台(终端) 随便输入 f5
alt+F6 进入第六个控制台(终端) 随便输入 f6
分别使用不同的虚拟机版本进行安装体验
---------------------------
11月26日(全天) linux 第3天授课内容:
命令行界面
在linux 系统发展的早期,Linux系统是没有图形环境的,
用户只能通过在命令行中输入命令来对系统进行操作。
Linux命令行由于其功能强大,高效稳定以及使用灵活等优点
,一直沿用到现在。并且依然是Linux 系统管理员和高级用户
管理Linux系统的首选
命令行简介:
Linux 命令行能够完成一些图形环境不能完成的操作,功能强大
而且执行效率高,稳定性好,使用灵活。所以在图形环境已经非常成熟
的今天,命令行方式还是很多Linux用户的首选.
在Linux系统中每打开一个命令行都启动一个Shell进程,
Shell是介于使用者和Linux/Unix操作系统内核间的一个接口。
为什么要使用命令行?
在图形用户环境非常普及的今天,用户只需要在计算机屏幕前轻松点击鼠标按钮,
即可完成各种操作。尤其是微软的操作系统,自windows95推出后,其命令行操作系统
DOS,就退出了应用。
而经过多年的发展,Linux操作系统也拥有了自己稳定的用户。
尽管图形操作环境简单直观,
只需要鼠标就可以完成操作,
但是在Linux中,还有一些应用程序没有提供图形界面,
它们只能通过命令行界面进行使用。
与DOS不同,Linux 的命令行界面是一个功能非常强大的系统,
通过它用户可以完成任何操作
包括 文件,网络,帐号,硬件,进程以及提供各种应用服务等。
使用图形环境,用户在同一时间只能与同一个程序进行交互;
而在命令行界面中,用户可以使用命令行中的高级Shell功能,
把多个工具软件结合在一起完成一项
单个工具软件无法完成的工作。
用户还可以把一些繁琐的操作编写成一个Shell脚本,while
然后在命令行中顺序运行,
省却了手工重复操作以及输入数据的烦恼。
除此之外,使用命令行界面还有以下优点:
a)命令行模式执行速度快,而且稳定性高。
b)命令行模式不需要启动图形用户环境,
可以节省大量的系统资源
c)命令行模式的显示简单,
不像图形环境需要传输大量的数据,
更适合网络远程访问方式,尤其是在网络带宽较小的环境中
d)命令行模式更灵活,同样的工具在命令行模式下,可
能需要提供更多的选项
正是由于Linux 命令行拥有很多图形不可比的优点,
所以很多的Linux系统管理员和高级用户
都更加倾向使用命令行对系统进行管理。
关于Shell简介:
Linux 用户每打开一个终端窗口都会启动一个Shell进程。
Shell进程就是Linux 系统中的一种具有特殊功能的程序,
它是介于使用者和Unix/Linux操作系统内核间的一个接口。
Shell通过键盘等输入设备读取用户输入的命令或数据,
然后对命令进行解析并执行,
执行完成后在显示器等输出设备上显示命令执行的结果。
Shell交互是基于文本的,
这种用户界面被称为命令行接口(Command Line Interface,CLI)
命令行的使用
终端标题栏目上点编辑->侧写首选项,可以设置终端的外观模式
终端基本操作:
终端窗口与文本编辑器无论在网络上,还是在操作上都比较类似。
如光标移动,复制粘贴等等。
以下是终端窗口中的基本操作介绍:
1)查看历史命令和输出结果
终端窗口右边有滚动条,
可以通过上下滚动查看窗口中曾经输入过的命令
以及命令的输出结果。
系统中还维护了一个命令的历史列表(history命令),
列表中记录了用户最近输入的命令,
通过键盘的上下方向键,选择曾经输入的历史命令
2)复制和粘贴
按住鼠标左键并拖动,使要复制的地方反白,然后右键,在弹出的快捷菜单中
选择 ->复制,然后在粘贴的位置上重复上述步骤选择 ->粘贴,实现复制与粘贴
从/根目录开始
cd / --进入根目录
普通用户进入桌面命令 cd /home/用户名/desktop(桌面)
超级用户进入桌面命令 cd /root/desktop(桌面)
3)命令补全
命令补全是指当用户输入的字符足以确定当前目录中的
唯一文件或目录时, 只须按一次Tab键或两次Esc键,
就可以自动补齐文件名剩下的部分。
如果不足以确定唯一的文件或目录名时,
系统会发出警告声。
这时再按一下Tab或两下Esc键,
系统会给出所有满足输入字符条件的文件或目录名
这在输入长文件名或记不清文件完整名称时,非常有用。
用户只要输入少数几个字符就可完成整个文件名的输入。
警告声可以上方面板上默认安装的声音图标,
单击出现音量菜单,可以调用音量的高低。
右键该图标可以出现声音首选项,
单击弹出音量的配置,可以按需配置
4)命令行快捷键
a)历史命令快捷键:
上方向键或Ctrl+p 显示上一条历史命令
下方向键或Ctrl+n 显示下一条历史命令
!num 执行历史命令列表中的第num条命令
!! 执行上一条历史命令
history 显示系统的历史命令列表
(默认保存500条)
__________________________________________________________________
______________________________________________________________________________________________________________________________________________________________________________________________________
b)光标移动快捷键
左方向键或Ctrl+b 光标向前移动一个字符
右方向键或Ctrl+f 光标向后移动一个字符
Alt+b 光标向前移动一个单词(图形环境可能无效)
Alt+f 光标向后移动一个单词(图形环境可能无效)
Esc+b 光标向前移动到当前单词的开头
Esc+f 光标向后移动到当前单词的末尾
Ctrl+a 相当于(home) 光标移动到当前行的开头
Ctrl+e 相当于(end) 光标移动到当前行的结尾
Ctrl+L 清屏,光标回到屏幕最上方的一行
(请比较下与 clear清屏命令的不同)
__________________________________________________________________
______________________________________________________________________________________________________________________________________________________________________________________________________
c)命令编辑快捷键
Delete 或 Ctrl+d 删除光标所在处的当前字符
退格键 或 Ctrl+h 删除光标所在处的前一个字符
Ctrl+c 删除整行(部分版本是复制)
Alt+退格键 向前删除光标所在处的整个单词
多次运用本快捷键,等同于删除整行
Alt+u 把光标位置到当前单词结尾所有字母转大写
Alt+L 把光标位置到当前单词结尾所有字母转小写
Alt+C 把光标位置所在单词首字母大写
相当于PHP ucfirst
Alt+E 交换当前与前一个词的位置(图形环境可能有的不同)
Ctrl+(先按X 后按U) 撤消刚才的操作
相当于windows Ctrl+Z
Esc+T 交换光标所在处的词与相邻词的位置
Ctrl+T 交 换光标的在处及其之前的字符位置,
并将光标移动到下一个字符
多条命令可以用;(分号)连接写成一行
例如:date ;!!; cal 2016 ;!!; history ; clear;!!
__________________________________________________________________
______________________________________________________________________________________________________________________________________________________________________________________________________
d)复制粘贴快捷键
shift+ctrl+c 复制当前鼠标拖放进行选择的内容
shift+ctrl+v 粘贴当前复制的内容
Ctrl+u 剪切命令行中光标所在处之前的所有字符
(不包括当前字符)
Ctrl+k 剪切命令行中光标所在处之后的所有字符
(包括当前字符)
此两键可以剪切整行字符
Alt+D 剪切光标之后的一个单词
Ctrl+Y 粘贴当前剪切的数据
___ _______________________________________________________________
______________________________________________________________________________________________________________________________________________________________________________________________________
常用的基本命令:
Linux 提供了大量的命令(约有数千条之多),
用户通过运行这些命令, 可以完成各种种类繁多的操作。
要全部记住这些命令,是不大可能的事.Linux为每条命令
都提供了联机帮助信息,用户可以通过 man 命令进行查看
1)man 要查看的命令
在该帮助信息中,可以分成以下6个部分:
a) NAME: 对命令的简单说明
b) SYNOPSIS: 命令的使用格式说明
c) DESCRIPTION:命令的详细说明信息 description
d) HISTORY: 命令历史渊源。
e) OTHER VERSIONS:其他版本说明
f) AVAILABILITY: 有效性说明
退出 man 命令信息,按 q 键
2)hostname 主机名命令 显示系统的主机名,
可用于更改主机名,但主机名的更改仅限于本次
下次启动将失效。
[用户名@主机名 /]# hostname
[litao@litao /] 以普通用户 litao 身份 登录 主机 litao
[root@litao /] 以超级管理员 root 身份 登录 主机 litao
[root@root /] 以超级管理员 root 身份 登录 主机 root
[litao@root /] 以普通用户 litao 身份 登录 主机 root
3)clear 清屏命令
4)exit 退出命令 用于退出shell会话
5)pwd 当前目录
6)cd 切换目录,常用于 pwd配合使用
7)cat 显示文件内容 用于把文件内容显示在输出设备上
(通常是屏幕)。
例如: cat hellworld.txt --在屏幕上输出helloworld.txt内容
可把 .txt 换成 .html进行观察
如果 文件内容比较多,可以把输出的文件数据
通过管道 进行翻屏查看
如:cat xxx | less xxx--为某大数据的文本文件
查看完毕按 q 键 退出
如果 文件在某路径下,有两种方法可以访问:
a) 先 cd 到某路径下,再 cat 文件
b) cat 某路径/文件
touch --触摸,联系
cat --捕捉,捕获
8)touch 创建文件,可创建一个内容为空的新文件。
如:创建一个名为:file的空白文件
toush file
--注:可事先用ls 命令输出所有文件,然后再创建
--创建之后再使用ls 进行观察
cat 某文件 > 新创建的空文件名
例如: cat 路径/file > 路径/abc --捕获 file文件内容 输出到 abc文件里
shell 脚本文件 可以循环给100个文件写数据
while
9)df 查看文件系统,可查看文件系统对应的设备文件名,
空间使用情况及挂载目录等。
例如: df 回车
查看系统当前所有已经挂载的文件系统。
默认以kb为单位, 显示磁盘空间的使用情况,
所以 df命令提供了 -m 选项
指定输出结果中以mb作为单位
df -m
从左到右:
文件系统 1M-块 已用 可用 已用% 挂载点
10) echo 显示信息 输出命令中的字符串或变量,默认输出到屏幕上
也可以通过重定向把信息输出到文件或其他设备上
例如: echo hello world
echo $PATH 显示变量值
11)who 查看当前已经登录系统的用户都有哪些
只显示最初的登录用户,
登录后使用su命令切换的用户不会被显示
12)whoami 查看当前会话的登录用户
13)su 切换用户命令
切换当前使用的用户,可以使用su命令。
由普通用户切换到其他用户需要输入切换用户的口令
如果由超级用户root切换到其他用户,则无需输入口令
使用exit命令会退回到原来的用户会话。
可配合使用whoami进行观察
14)ps 查看进程命令,用于查看系统中当前已经运行的进程信息
如果以长列表的形式查看,可加 -ef 选项
例如: ps -ef 相当于windows 进程管理器
15)grep 过滤命令 用于从文件或命令输出内容中查找
满足条件的数据行。
使用格式: grep 要查找的数据 来源
假设把下列数据写进 file_qizhong_kaoshi文件中
JianHao Cheng 95
TianMing Lei 93
Tao Li 93
Chen Zhao 90
ZhiWei Liu 88
WenJun Sun 87
JiWei Zhang 87
Jie Wu 85
YuHao Sun 84
Fei Yin 78
ChengShan Zhang 76
DingDing Xue 73
Dong Li 72
JinFeng Zhao 68
Kang Yang 68
YaHu Zhao 63
Xiao Zhang 62
JinKai Guo 57
BaoLin An 41
ZeKun Wang 39
XiaoYu Feng 34
cat file_qizhong_kaoshi --输出所有数据
grep An file_qizhong_kaoshi --输出BaoLin An
grep an file_qizhong_kaoshi --输出6行含an的数据
grep -v an file_qizhong_kaoshi --排除6行含an的数据
grep -E "an|8" file_qizhong_kaoshi
--输出含有 an 或 8 的 数据行
grep 8 file_qizhong_kaoshi --输出含有8的数据行
grep ^8 file_qizhong_kaoshi --输出以8开头的数据行
grep 8$ file_qizhong_kaoshi --输出以8结尾的数据行
^ 幂运算符号, 表示开头
$ 表示结尾
[0-9] 表示0-9之间任意一位数字
[a-z] 表示a-a之间任意一位小写字母
[A-Z] 表示A-Z之间任意一位大写字母
16) wc 统计命令 统计文件的行数,单词数和字节数
例如: 以上例创建的 file_qizhong_kaoshi文件为例
wc file_qizhong_kaoshi 输出结果如下:
22 44 315 file_qizhong_kaoshi
第一列:文件的行数
第二列:文件内容的单词数(只要用空格分开的,就算单词)
第三列:文件的字节数
第四列:文件名
如果只统计行数,加 -L 选项
例: wc -L 文件名
17) more 分屏命令 用于大量内容在屏幕上的分屏显示
该命令一次会显示一屏信息,
在屏幕底部显示--More--(百分比%)标识当前显示的位置
按space(空格键) 可看下一屏,
按enter 可看下一行
按 b 可看上一屏
按 q 退出显示
more 文件名
touch 新文件,写入上千行数据
统计含有c字母的行数,统计含数字(0-9)有多少行?
过多的内容,熟练掌握分屏命令进行查看````````````````````````````````````````
18)管道
Linux系统支持把一个命令的输出结果,
作为另一个命令的输入参数,这就是管道技术。
管道使用 | 符号标识。
使用语法格式:
输出结果的命令 | 输入结果的命令
相当于 PHP中的 $aaa->bbb->ccc写法
例1: 统计当前已经登录系统的用户总数。
who | wc -l
例2: 显示当前系统中正在运行的包含bash关键字的进程
ps -ef | grep bash
例3: 统计当前系统中正在运行的包含root关键字的进程总数
ps -ef | grep root |wc -l
例4:统计上面的学生成绩表中,90分以上的人数.
提示: 9$ 表示以9为结尾的
cat file_qizhong_kaoshi | grep 9 | -v grep 9$ | wc -l
备注:上面未考虑99分的情况
把90分 以上的数据 写入 90 文件
把80-89分以上的数据 写入 80 文件
把70-79分以上的数据 写入 70 文件
把60-69分以上的数据 写入 60 文件
把50-59分以上的数据 写入 50 文件
把50(不含50分)分以下的数据 写入 40 文件
以80-89分数据为例:
touch 80 //先新建一个80文件
cat file_qizhong_kaoshi | grep "8[0-9]" > 80 //数据导出到80文件里
以50分以下的数据为例:
touch 40 | cat file_qizhong_kaoshi | grep "[0-4][0-9]" > 40
新建40文件 导入成绩文件 过滤 写入
取出 90分以上的数据行 ??? > touch 90
grep "9[0-9]" 过滤90-99
管道技术支持 多个管道符的组合。
意思是说管道中接收管道输入的命令,
其输出结果还可以做其他命令的输入。
组合后的功能也更加强大。
19)env 本命令可以显示当前shell会话中已经定义的
所有系统默认和用户自定义的环境变量,
以及这些环境变量对应的变量值
env 回车 相当于 php中的 phpinfo( )函数;
个别环境变量的说明如下:
HOSTNAME = xxxxx //主机名
SHELL=/bin/bash //Shell名称
TERM=xterm //终端类型
USER=xxx //当前用户
MALL=/var/spool/mail/root //用户的邮件位置
PATH=xxx/xxx/xxx //位置变量
PWD=/xxx //当前目录
LANG=zh_CN.UTF-8 //语言格式
HOME=/xxx //用户主目录
LOGNAME=/xxx //登录的用户名
OLDPWD=/ //原来的目录
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
第三章 VI(VIM) 编辑器
vi编辑器是所有UNIX/Linux系統命令行下标准的文本编辑器,
它的强大功能不逊色于任何最新的文本编辑器。
在UNIX/Linux系统的任何版本中。
VI编辑器的使用方法是完全相同的。
所以学会使用vi编辑器,就可以在UNIX/Linux的世界里畅通无阻。
VI 编辑器的3种运行方式
VI编辑器可以分3种状态,它们分别是命令模式,输入模式及末行模式。
在不同的模式下可以完成不同的操作,其中各模式的说明如下:
命令模式: 控制屏幕光标的移动,字符,单词或行的删除,替换,
复制粘贴数据
以及由此进入输入模式和末行模式。(默认模式)
输入模式: 也称为插入模式。如果在命令模式下,
用户输入的字符都会被看做是命令来解释执行,
如果用户要把输入的字符当做文本内容,
则必须先进入到输入模式。
进入方法:在命令模式下按a,i,o
任意三键都可以进入输入模式。
退出按esc 返回到命令模式
末行模式: 在命令模式下,按 : 键即可进入末行模式.
此时vi/vim会在窗口最下方显示一个":"提示符,
用户可在此输入命令。
在该模式下,可以保存文件,退出vi/vim。(最主要的功能)
也可以查找并替换字符,列出行号,跳到指定行号的行等。
命令完成后会自动返回命令模式下,也可以按 esc 返回命令模式。
VI的使用,只要在shell中输入vi(或vim)命令,
也可以使用 vi 文件名 编辑指定的文件。
进入vi(vim) 方法:
1)vi(vim) + 回车
2)vi(vim) + 文件名 回车
例如: 要编辑文件 aa,进入 vi(或vim)默认是进入命令模式。
在该界面下最后一行会显示文件行数,字节数。
命令模式下 -> 按 a,i,o任意三键 ->输入模式
输入模式下 -> 按 esc 键 -> 回到命令模式
命令模式下 -> 按 : 键 -> 进入末行模式
末行模式下 -> 按 esc 键 -> 回到命令模式
熟练掌握三种模式的切换!
:se nu --设定行号(比较实用) --末行模式下比较常用的功能之一
:se nonu --取消行号的设定
新建一个 test 文件,里面放满26行
每行 格式如下:
1) aa aaa aaaa aaaaa
2) bb bbb bbbb bbbbb
3) cc ccc cccc ccccc
................
26) zz zzz zzzz zzzzz
保存方法: 末行模式下,输入:wq+回车
---------------------------------------------
VI 常用命令
vi 是一个功能非常强大的命令行下文本编辑工具,提供了大量的命令,
而且在不同的模式下支持的命令也有所不同。
下面对一些常用的命令进行介绍。
1)进入输入模式 (a,i,o)
i: 在当前光标所在处之前插入文本
I: 将光标移动到当前行的行首,并在行首之前插入文本
a: 在当前光标所在处之后插入文本
A: 将光标移动到当前行的行末,并在行末之后插入文本
o: 在光标所在行的下面新插入一行,并将光标移动到新行的行首插入文本
O: 在光标所在行的上面新插入一行,并将光标移动到新行的行首插入文本
----------------------------------------------------------------------
2)光标移动 --在命令模式下移动光标
h或左方向键: 将光标往左移动一格
j或下方向键: 将光标往下移动一格
k或上方向键: 将光标往上移动一格
l或右方向键: 将光标往右移动一格
请注意 h,j,k,l, 这四个键的布局规律(左下上右)
o或^: 移动光标到当前行的行首。(home比较方便)
$: 移动光标到当前行的行末。(end 比较方便)
请注意 ^ 与 $ 与正则表达式的规则相同
w: 移动光标到下个字的开头(成单词移动光标)
e: 移动光标到下个字的结尾(成单词移动光标)
b: 移动光标到上个字的开头(成单词移动光标)
ge: 移动光标到上个字的结尾(成单词移动光标)
nl: 在当前行中往右移动n个字符, n 为序数(限当前行)
如: 3l --在当前行向右移动3个字符
-: 光标位于当前行的上行行首
n空格:光标右移动n个字符,如果当前行到行尾没接上,
则移动到下一行继续接上(不限当前行)
Ctrl+b: 屏幕往上翻一页
Ctrl+f: 屏幕往下翻一页
Ctrl+u: 屏幕往上翻半页
Ctrl+d: 屏幕往下翻半页
b--上整屏
f--下整屏
u--上半屏
d--下半屏
1G: 移动光标到文件的第一行(页头)
G: 移动光标到文件的最后一行(页尾)
nG: 移动光标到指定行数的那一行 如:8G:
n+: 下移到n行的行首 2+:当前行下移2行到行首位置
n-: 上移到n行的行首 2-:当前行上移2行到行首位置
H: 移动光标到当前屏幕的首行的行头 相当于当前屏幕1G的行头
M: 移动光标到当前屏幕的中间行的行头
L: 移动光标到当前屏幕的末行的行头 相当于当前屏幕G的行头
非常著名的定位三键 H,M,L
假如有8行字符,光标在第3行上,按下2G,请问光标在第几行?
页头 1G
页尾 G
行头 ^,home
行尾 $,end
词头
词尾
怎样最快进入到vim xx 文件中,页尾行尾? 快捷键:G end
怎样最快进入到vim xx 文件中,页尾行头? 快捷键:G home
怎样最快进入到vim xx 文件中,页头行头? 快捷键:1G home
怎样最快进入到vim xx 文件中,页头行尾? 快捷键:1G end
----------------------------------------------------------------------
3)文本编辑
r:替换光标所在处的字符
R:替换光标所在处的字符,直到按esc键为止
J:把光标所处行的下一行内容接到当前行的行末
(上下行合并) 衔接
相当于php中的 . 号
x: 删除光标所在位置的字符
nx: 删除光标所在位置开始的n个字符,如:3x--删除3个字符.
X: 删除光标所在位置的前一个字符
nX: 删除光标的在位置的前n 个字符
dw: 删除光标所处位置的单词。 (成单词删除)
ndw: 删除光标所处位置开始的n个单词
db: 删除光标所处位置之前的一个单词
ndb: 删除光标所处位置之前的n个单词
dd: 删除光标所在的行 (比较重要!)整行删除
ndd: 删除光标所在行开始的n行(不包括光标所在行)
d0: 删除由光标所在行的第一个字符(行头)到光标所在位置的
前一个字符之间的内容
(通常理解为行头到光标位置之间的所有内容)
d$: 删除由光标所在位置到光标所在行的最后一个字符之间的内容
(通常理解为光标所在位置到行尾之间的所有内容)
d0+d$ 相当于 dd
d1G:删除由文件第一行到光标所在行之间的内容(包括光标所在行)
(通常理解为页头到光标所在行)
dG: 删除由光标所在行到文件最后一行之间的内容(包括光标所在行)
(通常理解为光标所在行到页尾)
删除全文有几种方法:
1)d1G+dG(从首行删到光标所在行,再从光标所在行到末行)
2)L+d1G(光标先定位到末行,再d1G)
3)H+dG (光标先定位到首行,再dG)
4)删除整个文件再重建该文件**
u: 撤销更改的内容(恢复操作)
ctrl+u:撤销在输入模式下输入的内容
----------------------------------------------------------------------
4)复制粘贴
yw:复制光标所在位置到单词末尾之间的字符
把光标放在单词的词头位置,按yw相当于复制整个单词
nyw:复制光标在位置之后的n个单词
不依赖ctrl 键
yy:复制光标所在的行
nyy:复制由光标所在行开始的n行
(考虑是否包括光标所在行? 包括光标所在行)
怎么快速复制并粘贴到3万行?
怎么快速删除粘贴出来的3万行? u
请设置se nu 并L进行观察
p: 将复制的内容粘贴到光标所在位置(win系统下ctrl+v)
----------------------------------------------------------------------
5)查找与替换
/str:从光标位置开始往文件末尾查找str,
按n查找下一个,按N返回上一个
相当于不带过滤器的 grep
?str:从光标位置开始往文件开头查找str,
按n查找下一个,按N返回上一个
:s/p1/p2/g :将光标所在行中所有p1用p2替换
:s/a//g +回车
:s//&&/g
:n1,n2s/p1/p2/g+回车 :将第n1到n2行中,所有p1用p2替换
:g/p1/s//p2/g +回车 :将文件中所有p1 都用p2替换
把整个文件中的空格,用--替换
----------------------------------------------------------------------
6)末行模式命令 :
w :保存当前文件 write(写入)
w! :强制保存
wq!: 强制保存并退出vi/vim (比较常用)
w filename: 将当前编辑的内容写到文件 filename 中
q: 退出vi/vim quit(退出)
q!:不保存文件,强行退出vi/vim
e filename: 打开并编辑文件filename, edit(编辑)
如果文件不存在则创建一个新文件
r file: 把文件file的内容添加到当前编辑的文件中
(跨文件操作,比较重要) 相当于php include require
功能就是合并文件内容!
r 路径/文件
n: 移动光标到第n行
!command:执行Shell命令command (暂缓讲解 2015-12-02)
r!command:将命令command的输出结果添加到当前行 (暂缓讲解 2015-12-02)
shift+zz(直接退出vi/vim 只能在命令模式下)
ZZ (直接退出vi/vim,但正在编辑的内容是否保存?)
----------------------------------------------------------------------
vi的应用案例:
init 命令级别
一般来讲 linux 系统安装之后,如果在安装系统时,
选择图形版本的话,计算机启动时会默认进入到图形用户环境。
这就对系统管理员或高级用户,或者linux 偏好命令行的使用者
感觉有所不便。可以通过更改 init 命令的级别,
从而使系统默认进入到指定的用户环境中
init命令级别如下:
init 0 --表示: 关闭计算机
init 1 --表示: 单用户模式
init 2 --表示: 不带网络的多用户模式
init 3 --表示: 完全多用户模式
init 4 --表示: 尚未使用
init 5 --表示: 图形环境
init 6 --表示: 重启计算机
如果想开机进入到命令行模式的话,
只要把 init 5 级别 改为 init 3 就可以了
但是在哪里修改init 级别命令呢?
系统运行级别表文件: root/etc/inittab
1) cd 到根目录下的 /etc 目录中
2) 在etc 目录下,运行 ll | more 命令,
可以翻页找到 inittab (系统运行级别表)文件
3) vi或vim inittab 在该文件中 找到 id:5:initdefault内容
4) id:5:initdefault 就是控制系统的运行级别的配置选项,
只要把 5 替换成 3 ,
修改后的配置就是: id:3:initdefault
5) 退出inittab 文件的输入模式,保存并重启系统,
系统就会按进入到默认的命令行模式
提示:进入命令行模式后,如果想切换到图形模式
可输入 init 5 或 startx(较常用)
注:如果在命令行模式下,想进入图形模式,
写 init 5 或 startx 两条命令之一即可
特别警告: 不能把init 运行级别改为 init 0 或 init 6
如果不小心改成了 init 0 或 init 6
可以重做系统之前,进入救援模式,进行恢复
那样的后果将无法进入系统,请自行思考原因!!!!
-----------------------------------------------------------------------------------
linux 教学内容:
配置: linux 系统管理员,运维工程师
DNS(域名解析--反向解析),
DHCP(动态分配IP),
Samba(与不同系统共享文件),
Apache+PHP+MySQL
(PHP工作环境搭建,
Win2003服务器所有PHP源代码将移植这里,进行改写,OOP);
FTP(文件传输服务),
VH(虚拟主机服务),
邮件服务
远程服务??
Telnet 服务??
Oracle 数据库服务 *** Java+Oracle ,PHP+Oracle
--------------------
VI,VIM 编辑器使用
--------------------
Shell 编程 能达到编写Shell脚本,实现系统某项功能的程度
-------------------
写一个带按钮功能的网页,单击该按钮,
可以弹出: Hello World! 警告框
再单击该警告框,可以弹出 Hello,my Linux
然后 输出 100行 hello! (隔行交错颜色)
如果带样式表功能就更好了!
提示需要用到 js for循环
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
第四章 用户和用户组管理
Linux 本身就是一个多用户多任务的操作系统,
它有完善的用户管理机制和工具。
本章将从命令行和图形环境两个方面
对Linux的根用户,普通用户和用户组的配置和管理
进行讲解,并对用户管理中常见的问题进行分析
用户管理概论
Linux是一个多用户多任备的操作系统,
所谓的多用户就是指多个用户
可以在同一时间使用同一个系统,
而且每个用户可以同时执行多个任务,也就是在一项任务
还未执行完时,用户可以执行另外一项任务。
所以,为了区分各个用户以及保护不同用户的文件,
必须为每个用户指定一个独一无二的用户帐号,并进行用户权限管理。
我们就开始介绍用户和用户组的管理,
并对这两者所涉及到的系统配置进行说明
1)用户帐号
linux 用户有3类:
a)根用户(root用户) b)虚拟用户 c)普通用户。
a)根用户就是系统的超级用户,拥有系统的最高权限,
可以对系统中的所有文件,目录,进程进行管理,
可以执行系统中的所有的程序,
任何文件权限控制对根用户是无效的。
b)虚拟用户,又称伪用户。
这类用户都是系统默认创建或者由某些程序安装后创建的。
一般情况下不需要手工添加,它们不具有登录系统的权限,
这类用户的存在
只是为了方便系统管理和权限控制,满足相应的系统或应用进程对文件所有者的要求
比如:bin,daemon,adm,ftp,mail等等
c)普通用户 是可以登录系统,但只能操作自己拥有权限的文件,
这类用户都是由系统管理员手工添加的。
(可以用命令或图形环境进行添加(创建))
每个用户帐号一般都有如下属性:
[用户名:] 系统中用来标识用户的名称,可以是字母,数字组合的字符串,
而且必须以字母开头,区分大小写。通常长度不超过8个字符。
思考:为什么有不超过8个字符的限制?
[用户口令:] 用户登录系统时用于验证的密码
[用户UID:] 系统中用来标识用户的数字。
root用户的UID为0
普通用户的UID介于500~60000之间.
[用户主目录:]用户登录系统后的默认所处目录,
用户应该对该目录拥有完全的控制权限
[登录shell:]用户登录后启动以接收并解析执行用户输入命令的程序。
比如: /bin/bash,/bin/csh.
虚拟用户因为不具有登录系统的权限,
所以虚拟用户的该属性一般为空
或者是/sbin/nologig, /bin/false 表示禁止用户登录
[用户所属的用户组:] 具有相同特征的多个用户被分配到一个组中,
一个用户可以从属于多个用户组。
Linux 标准用户列表
请在命令行下输入 cd /etc 切换到 etc目录下
vi passwd 效果一样,不带颜色功能
vim passwd 带颜色功能
再cat passwd 进行观察
这里截取部分图例:
UID 系统保留的用户编号 0-499
(可编500个系统内部用户号)
root : x : 0 : 0 : root : /root : /bin/bash
bin : x : 1 : 1 : bin : /bin : /sbin/nologin
上述图例一共7个,从左到右用:号分隔。
分别表示如下:
用户名 加密口令 UID 用户所属组ID 个人信息描述 用户主目录 登录shell
其中加密口令 x ,在该文件(passwd)中只是存放一个特殊字符x,
并没有存放口令。
是因为passwd文件是对所有用户都是可读的。
请用 ll passwd 命令进行观察
这样做的好处是每个用户都可以知道系统中有哪些用户,
但缺点是可以获取其他用户的加密口令信息,
能够通过一些解密软件进行破解
这样降低了系统的安全性。
因此为了提高系统的安全性,linux就把加密后的口令分离出来,
---------------------------------------------------------------
---------------------------------------------------------------
passwd(用户) 根用户可以禁用某个用户,
如果禁用的话,在图形登录界面中,
看不到该禁用用户的登录选项
可见性:所有用户都可以看到该文件
shadow(用户密码) 根用户可以禁用某个用户的密码,
如果禁用该用户的密码,
在图形登录界面中,
可以看到用户名登录选项,但无法启用密码验证。
可见性:只有根用户才能看到该文件并做读写操作
其他用户看不到该文件
采用命令行方式,在passwd文件里实现用户的删除管理!
提示:linux 通过passwd,shadow两个文件实现用户的管理
可以配合vi,实现用户的删除.
如果是少量的用户,运行图形环境, 删除比较方便
如果是大量的用户,运行命令行环境,在passwd文件里删除比较方便
删除方法: 找到用户所在行,
按 vi 快捷删除命令dd,或其他删除命令
作业:熟练掌握passwd,shadow两个文件的用法,
并观察删除用户,禁用用户,
禁用用户密码,删除用户密码,
根用户访问普通用户的命令: su 用户名
比较在图形环境,命令环境中删除用户的便利性.
以上作业的要求是达到:熟练的标准!!
---------------------------------------------------------------
---------------------------------------------------------------
单独存放在一个文件中,这个文件是 /etc/shadow文件。
只有超级用户才拥有该文件的权限,
这就保证了系统用户密码的安全性。
Shadow是passwd的影子文件,
该文件中保存了系统中所有用户和用户口令
以及其他在passwd中没有包括的信息。
该文件只能由root用户来读取和操作。
请用 ll -shadow 该文件路径在 /etc下
可以清楚地看到该shadow 是属于root 用户,
也就是说只有root用户
才有权限可以访问该文件。
使用vim shadow 进入该文件
在该文件中系统的每个用户都会有在文件中有一条对应的记录
每行记录通过冒号分隔成9个列(8个:号,9个列),每个列各有不同的含义
列序号--内容----------------字段说明
第1列--用户名--------------用户名,用于和passwd文件中的用户记录对应
第2列--加密后的口令------- 通过md5算法加密后的用户口令信息
第3列--上次修改口令的时间--最近一次修改口令的时间与1970年1月1日的间隔天数
第4列--两次修改口令的间隔最少天数--指定用户必须经过多少天后才能再次修改其口令。
如果该值设置为0,表示禁用本功能
第5列--两次修改口令的间隔最大天数--指定口令在多少天后必须被修改
第6列--在口令过期前多少天警告用户--到达该时间后,用户登录系统时将会被提示口令将要过期
第7列--口令过期多少天后禁用该用户--当用户口令过期达到该时间限制后,系统将会禁用该用户,用户将无法再登录系统
第8列--用户过渡日期--指定用户从1970年1月1日以来被禁用的天数,如果该列的值为空,则表示该用户一直可用
第9列--保留字段--目前尚未使用
通过以上对shadow各列的说明,我们可以看出passwd和shadow两个文件是互补的。
当用户登录系统的时候,系统首先会检查/etc/passwd文件,
查看该用户的帐号是否存在,然后确定用户的UID。
通过UID确认用户的身份.
如果存在该用户,则读取/etc/shadow文件中该用户所对应的口令。
口令输入正确的话,允许用户登录系统。
用户管理:
/etc/passwd 用户文件(保存用户信息)
/etc/shadow 用户口令文件(md5加密过的用户口令)
只有超级管理员root 才能看到并读取
-----------------------------------------------------------------------
用户组
用户组是具有相同特征的用户的集合体,
如果要让多个用户具有相同的权限。
比如查看,修改,删除某个文件或强行执行某个命令。
使用用户组将是一个有效的解决办法。
通过把用户都定义到同一个用户组。
然后修改文件或目录的权限。
让用户组具有一定的操作权限。
这样用户组下的用户对该文件或目录都具备相同的权限。
通过这样的方式,可以方便地对多个用户的权限进行集中管理,
避免对每个用户都进行权限设置。
每个用户组都具有如下属性:
[用户组名称]: 系统中用来标识用户组的名称,由字母或数字构成。
与用户名一样,用户组名不可以重复
[用户组口令]: 一般情况下用户组都不设置口令.如果设置的话,
则用户在进行组切换时,需要先经过口令验证
[用户组GID]: 与用户UID类似,也是一个整数.被系统内部用来标识组.
一个用户组中可以有多个用户,
一个用户也可以属于多个用户组。
所以,用户和用户组之间的关系可以是多对多。
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
用户组文件: group 和 gshadow
用户文件: passwd 和 shadow
与用户类似,用户组的主要配置文件也同样有两个: /etc/group , /etc/gshadow.
group文件保存有系统所有用户组的配置信息,
包括用户组名称,用户组GID,用户列表等等.
可以到etc目录下,使用 vim group 进入后
观察到文件中的每一行记录都通过:号分隔成4个字段(3个:号分隔4个列)
格式如下所示:
用户组名称 : 用户组口令 : GID(用户级ID号) : 组成员列表
用户组口令--与passwd文件一样,并不存放实际的密码,而只是一个特殊字符x
组成员列表--属于这个组的所有用户的列表,不同的用户之间通过,号分隔
文件的访问权限
输入命令: ll group
可以从中看出,只有root用户对group文件拥有读写权限,而其他用户只拥有读的权限。
gshadow文件是 group文件的影子文件,两者是互补关系(就跟passwd与shadow之间关系一样)
用户组口令信息就是存放在这个gshadow文件中。
---------------------------------------------------------------------------------
用户文件是 6个:号分7个列
passwd
用户口令是 8个:号分9个列 只有各自文件的第1,第2列才是完全一样的
shadow
---------------------------------------------------------
group 用户组名 用户组口令 用户组ID (gid) 用户组成员列表
gshadow 用户组名 用户组口令 组管理者 用户组成员列表
输入命令: vim gshadow 进入后
观察到文件中的每一行记录都通过:号分隔成4个字段(3个:号分隔4个列)
格式如下所示:
用户组名称 : 用户组口令 : 用户组管理者: 组成员列表
用户组口令--用户进行组切换时的验证口令,这个字段可以为空或!
如果为空或者是!,表示口令为空(无口令)
用户组管理者--如果组有多个管理者,用,号进行分隔
组成员列表--与group 中的组成员列表一样,多个组成员也是通过,号进行分隔
只有 root 用户才可以访问gshadow文件.
** 一般情况下,普通用户属于 users 组 组号为 100
使用图形化环境,新建立
一个 Enging 组(英语组),
一个 Math 组(数学组),
一个 History 组(历史组).
再新建7个同学姓名做用户名 ,每个组里分2个用户,
剩下的一个同学姓名做为所有组的用户
分别使用 各组里的用户名,登录系统,
进入用户组图形界面并退出各组
操作过程可以查看 group 文件进行观察,
并能使用wc -l命令报告各组的人数
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
普通用户管理
普通用户是相对于根用户(root)来说的,
这类用户的权限都是受限制的,
他们只能 访问和操作自己拥有权限的文件.
由于root用户和虚拟用户一般都是由系统或程序默认创建,
所以 linux 用户管理主要是普通用户的管理。
本节将介绍Linux 普通用户的管理,包括用户的添加,修改,删除
[添加用户]
添加用户就是在系统中创建一个新的用户帐号,
然后为该帐号指定用户号,用户ID,用户组,用户主目录和用户登录Shell等等
Linux中通过useradd命令添加用户帐号
该命令 useradd 分两大使用方向:
第一使用方向:
useradd [-c] [-d] [-e] [-f] [-g] [-G]
[-m [-k]]|[-M][-s][-u uid]
[-n] [-r] login(新用户名)
useradd 各参数选项 新用户名
----------------------------------------------------------------
第二使用方向:
useradd -D [-g] [-b] [-f] [-e] [-s]
----------------------------------------------------------------
[第一使用方向]说明各项参数
-c comment 新用户帐号的注释说明
-d home_dir 用户登录系统后默认进入的主目录,
替换系统默认的/home/用户名
-e expire_date 帐号失效日期,
日期格式一般为:MM/DD/YY(可根据不同版本有不同设置)
选项说明文档 man 没有提示设置格式
-f inactive_time 帐号过期多少天后永久停用.
如果为0,则帐号立即停用
如果为-1,由帐号一直可用,默认为-1
-g initial_group 用户的默认组,值可以是组名也可以是GID.
用户组必须是已经存在的,默认值为100即 users组
-G group[,,,] 设置用户为这些组的成员.
可以定义多个用户组,每个用户组通过,号分隔。
而且不可以有空格
组名的限制与 -g 相同
-m 用户主目录如果不存在则自动创建。如果使用-k选项,
则 skeleton_dir目录和/etc/skel目录下的内容都会被复制到主目录下
-M 不创建用户主目录
-n 默认情况下,系统会使用与用户名相同的用户组作为用户的默认用户组。
该选项将取消此默认值
-N 不为该用户创建用户组
-s 设置用户登录系统后使用的Shell名称,默认值为/bin/bash
-u uid 用户的UID值。该值在系统中必须是唯一的。
0-499 默认是保留给系统用户帐号使用的,所以该值必须大于499
login 新用户的用户名
/home/testuser1
如:创建一个新用户 testuser1,UID为502,主目录为 /usr/testuser1
属于testgroup,users,adm 三个组.默认用户组为 testgroup.
用户:yinfei 组:users,adm
用户:xuedingding 组:users
useradd -c putongxuesheng -u 506 -g 100 -G adm -m yinfei
useradd -c putongxuesheng -u 507 -g 100 -G adm -m xuedingding
useradd -c putongxuesheng -u 508 -g 100 -G adm -m zhaojinfeng
useradd -c putongxuesheng -u 509 -g 100 -G adm -m liuzhiwei
useradd -c putongxuesheng -u 510 -g 100 -G adm -m yangkang
useradd -c putongxuesheng -u 511 -g 100 -G adm -m zhangchengshan
useradd -c putongxuesheng -u 512 -g 100 -G adm -m zhangjiwei
其命令格式如下:
useradd -u 502 -d /usr/testuser1
-g testgroup -G adm,users -m testuser1
提醒:在本命令中, -g testgroup 组暂时未创建,所以本命令会报错,
报错信息:useradd:group 'testgroup' doex not exist 组名不存在
如果创建的用户已经存在,系统也会报错
报错信息:useradd:user 'testuser1' already exists 用户xxxx已经存在
如果用户成功创建后将会分别在 /etc/passwd,/etc/shadow文件中添加相应的记录
可输入命令: cat /etc/passwd | grep testuser1 进行查看
可输入命令: cat /etc/shadow | grep testuser1 进行查看
---------------------------------------------------------
第二使用方向说明各项参数
-D 当使用本选项时,useradd将会使用命令中其他选项所指定的值
来对系统中相应的默认值进行重新设置。
如果不带其他选项,则显示当前系统的默认值
可输入 useradd -D 命令进行观察
-b default_name 设置新用户帐号默认的用户主目录
-e default_expire_date 设置新用户帐号默认的过期日期
-f default_inactive 设置新用户帐号默认的停用日志
-g default_group 设置新用户帐号默认的用户组名或GID users 100
-s default_Shell 设置新用户帐号默认的Shell名称
第二使用方向的案例:
先用 useradd -D 观察系统提供的默认值,
注意观察 HOME=/home 选项
再用 useradd -D -b /usr
指定默认的用户主目录值为 /usr
最后用 useradd -D 重新显示系统的默认值,
注意观察 HOME=/usr 选项
可以看出默认的用户主目录HOME发生了改变
其中 CREATE_MAIL_SPOOL=yes //创建邮件池
以上设置完成之后,可以再创建一个测试用户
testuser2,采用默认的主目录
命令如下:
useradd -m testuser2
进入到passwd 文件可以看到默认的用户主目录
被更改为 /usr/testuser2
已经不再是原来的默认主目录 /home/用户名
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
[更改用户口令]
修改用户口令是通过passwd命令完成的,
根用户可以在不需要输入旧口令的情况下
修改包括自己和其他所有系统用户的口令。
普通用户只能修改自己的口令,并且在修改前必须输入正确的口令。
用户在刚创建时,如果没有设置口令,
则该用户账号将处于锁定状态下,
无法登录系统。
必须使用passwd命令指定其口令。
passwd 命令的格式如下:
passwd [-k] [-l] [-u[-f]] [-d]
[-n mindays] [-x maxdays] [-w warndays]
[-i inacivedays] [-S] [username]
各选项说明如下:
-d 删除密码,本参数仅有管理者才能使用
-f 强制执行
-k 设置只有在口令过期失效后,才能更改用户口令
-l 通过在用户口令字段前加!,
对用户进行锁定.被锁定的用户将无法登录系统。
本选项只能由系统管理员使用。
-S 列出密码的相关信息。本选项只能由系统管理员使用
-u 解开已被锁定的用户帐号。
该选项会删除口令字段前的!号,
解锁后用户可以重新登录系统
username 指定需要更改口令的用户,
该选项只能由系统管理员使用。
采用命令行创建不少于7个普通用户(可采用同学姓名),
前两个用户加入 English 组(须提前创建)
中两个用户加入 Math 组(须提前创建)
后两个用户加入 History 组(须提前创建)
最后一个用户加入 adm,users,english,Math,History组
每个用户都有自己默认的主目录 /home/用户名
创建之后,分配各自用户名称的拼音当做口令
并能使用 -S 查看用户名称的状态
然后随意 把其中一位用户锁定,
锁定命令: passwd -l 用户名,观察该用户是否能登录系统。
再用命令: passwd -u 用户名,给该锁定的用户解锁,使其能重新登录系统
以上实验运行完毕之后,再以根用户身份登录系统
vi shadow ,随意把其中一位用户的口令前加! 保存并退出vi
观察该用户是否能登录系统。
然后再使用 passwd -u 解除锁定,观察是否有效!
从中比较使用vi shadow 直接锁定用户口令
与 passwd -l 用户名 的区别
BAD PASSWD: it does not contain enough DIFFERENT characters
不好的密码: 它 不 包含 足够 不同 字符
Retype new password:
重打字 新(的)密码
Sorry, passwords do not match
匹配
passwd: all authentication tokens updated successfully
所有(的) 鉴定 记号 更新 成功
分别以root用户和普通用户进行更改自己的口令进行测试
其中root用户做 passwd 无须输入旧口令,直接输入新口令即可
普通用户做 passwd 需要输入旧口令,然后输入新口令,新口令不宜小于6个字符
[锁定用户]
在做passwd 时,采用 -l 选项 将进行用户名称的锁定,
被锁定的用户无法登录系统
锁定格式: passwd -l 要锁定的用户名称
提示:在锁定之前,先vim shadow 观察指定的用户及口令状态
锁定之后再次进入 shadow 文件观察锁定的用户口令前是否增加了!号
如果口令之前有!号,表明进行了用户的锁定.该用户将不能再登录系统
解除锁定方法:
passwd -u 已锁定的用户名
提示:使用解锁之前,最好先进入到shadow文件进行观察
解锁之后再次进入 shadow 文件进行观察
观察只须看用户口令之前是否有!号即可
以上介绍的 passwd -l 方法只是其中之一,
还有一种方法是:直接修改passwd文件,在该文件中找到用户名称对应的记录
在记录之前加注释符"#" 号.
此两种方法都是临时禁用用户,并非删除用户.
---------------------------------------------------------------------------
[删除用户]
当某个用户不再需要时,可以通过userdel命令进行删除.
要删除的用户如果已经登录到了系统中,则无法删除,
必须要等到该用户退出系统后才能进行删除操作。
删除用户后,其对应的记录也会在passwd ,shadow文件中被删除。
删除命令格式如下:
userdel [-r] 要删除的用户名
-r 删除用户的同时把用户的主目录及其下面的所有子目录和文件也一并删除
如果不带 -r 选项,则只是把用户从系统中删除,其主目录会被保留。
login 需要删除的用户名。用户名必须是已经存在于系统中
如: 要删除指定的用户 daliu
userdel -r daliu
如果daliu用户已经登录了系统,则无法删除并返回用户名已经登录的提示信息
解决方法:
通过 who 命令找出正在登录的 daliu 用户的进程,
并通过kill命令 kill --杀死
杀死该进程,清除该用户的登录进程后,即可删除该用户。
命令: who -u 带-u 的选项,可以看到最后一列的进程号
只要找到用户的进程号
命令: kill -9 xxxx (xxxx为进程标识号,杀死该号可清除该用户登录系统)
-9 表示强制杀死
---------------------------------------------------------------------------
[修改用户信息]
用户添加后,可能会遇到用户信息的变更,
如用户主目录的变更,组的变更等等
可以通过命令 usermod 进行用户信息的变更。
usermod [-c comment] [-d home_dir] [-m]
[-e expire_date] [-f inactive_time]
[-g initial_group] [-G group [,,,]]
[-l login_name] [-s Shell]
[-u uid [-o]] login
-c comment 更新用户在passwd文件中的注释字段信息
-d home_dir 更新用户在的主目录 如果指定了 -m 选项,则会把旧主目录下的
内容复制到新主目录下。
-g initial_group 更新用户的默认组
-G group[,,,,] 更新用户的用户组列表
-l login_name 更新用户的用户名
-s Shell 更新用户登录的Shell程序
-u uid 更新用户的uid,用户主目录下的所有子目录以及文件的用户uid
会自动更新,但是用户存放在主目录以外的文件和目录必须要手动更新
login 需要更新的用户名
如: 希望用户 daliu 的默认用户组为users
命令: usermod -g users daliu
提示:更新之前可先到 group 文件进行查看相关参数
更新之后可再到 group 文件进行查看,
两者对比可以验证是否更新成功
----------------------------------------------------------------------------
----------------------------------------------------------------------------
----------------------------------------------------------------------------
用户组管理
要让多个用户具有相同的权限,
最简单的方法就是把这些用户都添加到同一个用户组中.
然后对用户组进行授权。
创建用户时,系统会默认创建与用户帐号同名的用户组。
系统管理员也可以手工添加需要的用户组。
[增加用户组]
用户组的添加也可以通过groupadd 命令来实现
其命令格式如下:
groupadd [-g gid [-o]] [-r] [-f] group
使用说明如下:
-g gid 用户组的GID值。该值在系统中必须是唯一的,
除非使用 -o 选项。
0-499 是默认保留给系统用户组使用的,
所以该值必须大于499
-r 允许创建GID小于499的用户组
group 用户组的名称
例如: 要添加一个gid 为501 的用户组 testgroup
命令:
groupadd -g 501 testgroup 增加用户组命令
cat group | grep testgroup 查看命令
-----------------------------------------------------------------------------
[修改用户组]
对于已经创建的用户组,可以修改其相关属性,
为用户组设置口令.
如果用户属于多个组,还可以在这些用户组之间进行切换
[修改用户组的属性]
通过groupmod命令 可以对用户组的属性进行更改,其命令格式如下:
groupmod [-g gid [-o]] [-n new_group_name] group
各选项说明:
-g gid 修改用户组的gid 值.该值在系统中必须是唯一的,除非是使用 -o选项
0-499是默认保留给系统用户组的,所以该值必须大于499.
更改gid后,相应文件的gid必须由用户自己手工修改.
-n new_group_name 修改为新的用户组的名称
group 需要修改的用户组的名称。
例如: 要将用户组 testgroup 名称修改为 testgroup_22
可以使用以下命令:
groupmod -n testgroup2 testgroup
新组名 旧组名
修改完成之后,可以使用 cat group | grep test 进行观察
-----------------------------------------------------------------------
[切换用户组]
一个用户可以同时属于多个用户组,但用户登录后.只会属于默认的用户组。
与切换用户类似,可以通过newgrp命令在多个用户组之间进行切换.
其命令格式如下:
newgrp [-] group
选项说明如下;
- :重新初始化用户环境(包括用户当前工作环境等).
如果不带-选项,则用户环境将不会改变。
group : 希望切换的用户组
root 用户默认的用户组为 root.如果要切换到 adm 用户组.
可以使用如下命令:
newgrp adm
通过id命令可以获取用户当前所属的用户组名称
id -ng
从中可以看到用户当前所属的用户组为 adm.
---------------------------------------------------------------------
[修改用户组口令]
默认情况下,用户组的口令均为空.
为提高安全,可以通过gpasswd 命令修改用户组的口令信息。
设置用户组口令后,用户切换到该用户组时,需要先经过口令验证。
例如要对 testgroup_22 用户设置口令,可使用如下命令:
gpasswd testgroup_22
系统会要示用户输入两次新口令,输入完成后即完成设置.
现在如果用户需要切换到testgroup_22组时,系统会要求用户先输入口令
等口令验证成功后,用户才能切换到用户组中。
newgrp testgroup_22
会提示输入组口令
口令输入之后
id -ng 命令可以查看 所属的用户组名
---------------------------------------------------------------------
[删除用户组]
要删除一个已经存在的用户组,可以使用groupdel 命令
并在该命令中指定需要删除的用户组的名称
使用格式如下:
groupdel group
group 表示要删除的用户组的名称
例如:要删除用户组 testgroup_22
可以使用如下命令:
groupdel testgroup_22
提示1: 如果用户组中仍有用户是以该用户组做主用户组的话,
那么该用户组是无法删除的。
将会返回如下报错信息:
cannot remove user's primary group
提示2: 与添加用户时自动添加同名的用户组不同.
删除用户时并不会自动删除已创建的同名用户组。必须手工删除。
--------------------------------------------------------------------------
常用用户管理命令:
[who] 查看已登录的用户
如果要查看系统上次启动的时间 命令如下:
who -b
[whoami] 查看当前用户名,包括当前Shell会话用户的用户名.
[id] 查看当前用户信息
该命令显示当前登录用户或者命令中指定的用户信息。
包括用户的uid,所属用户组的id,主用户组的id等等
如果只希望显示用户的用户组列表,可以使用
id -nG,id -ng 这两个命令。注意看该两个命令的区别
[write] 发送消息,该命令可以与其他已经登录系统的用户进行通信。
例如要向用户 abc 发送消息。
write abc
Hello,abc
输入要发送的消息并回车,对方可以收到.
通信完成后,按ctrl+C可以关闭通信会话.
[pwck] 检查密码文件格式,
该命令检查passwd,shadow配置文件中每条记录的格式和数据是否正确,
并返回相关的检查结果。
[groups] 显示用户组列表,该命令可以显示指定用户的用户组列表,
如果不带任何选项使用该命令。则返回当前用户的用户组列表。
-----------------------------------------------------------------------
网络配置:
图形化工具配置:
1)右键点击标题面板上的连接图标
2)选择倒数第2行的编辑连接选项
3)在弹出的网络连接窗口中,选择第1个 add(增加)按钮
4)接下来在弹出的 choose a Connection Type(选择一个连接类型) 窗口中
5)选择Wired(有线连接) 选项
6)点击右下角的 create(创建)按钮
7)回到Editing Wired connection1 (编辑有线连接1)窗口
8)窗口中 标题栏下方第一行文字为:
Connection name: 文本框中默认为 Wired connection 1 (不用做更改)
(连接类型)
找到下方的IPV4 Settings 标签选项卡
9)在method: 方法选择中。选择第三项 Manual (手工连接)
手工连接--就是分配固定的静态IP地址
10)在下方的Address 选项中,
从左到右三个选项标签分别是:
address(IP地址) , Netmask(子网掩码) , Gateway(网关)
点击右边的add(添加)按钮
光标出现在Address选项卡下方的文本框里,此时手工输入 192.168.1.6
接下来在右方的 Netmask 选项卡下方的文本框里,此时手工输入 255.255.255.0
接下来在右方的 Gateway 选项卡下方的文本框里,此时手工输入 192.168.1.3(此地址将是真实机的IP地址)
真实机配置 虚拟机配置
ip地址: 192.168.233.1 (计划当做虚拟机网关)
子网掩码: 255.255.255.0 255.255.255.0 子网掩码不变
默认网关: 192.168.233.3 (计划当做虚拟机IP)
11) 以上输入完成之后,点击最下方的 apply(应用)按钮
12) 在终端中选择 service network restart(重启网络配置命令)
如果重启过程中,一切正常的话
在终端中输入命令: ifconfig + 回车
可在窗口输出的参数中
找到 eth0 ,在右方第二行会出显示:
inet addr : 192.168.1.6 ,Bcast 192.168.1.255 Mask 255.255.255.0
说明linux 已经接受了手工配置的 IP地址,子网掩码等参数
13)回到win7真实机中,左键点击系统托盘处的网络标记,
在弹出的菜单中,左键点击打开网络和共享中心,
在网络中找到 VMware Network Adapter VMnet8,并左键点击
在弹出的状态窗口中,点击属性按钮,进入属性窗口中,
在此连接使用下列项目的选项列表里,找到internet协议版本 4(TCP/IPv4)(俗称ipv4),前方的复选框打上勾
并点击下方的属性按钮,进入到常规配置表中,把 使用下面的IP地址 前面点住。
然后配置IP地址:
IP地址: 192.168.233.1 (同时也是虚拟机CentOS的默认网关)
子网掩码: 255.255.255.0
默认网关: 192.168.233.3 (同是也是虚拟机CentOS的 IP地址)
14) 配置完成也可以回到桌面环境中,重复第1步操作
在弹出的子菜单中,选择倒数第三行 connection information(连接信息)选项
点击该选项,在弹出的子窗口中,找到IPv4 部分,可以非常直观的显示如下信息:
IP Address : 192.168.1.6
Broadcast Address: 192.168.1.255 (广播地址)
Subnet Mask : 255.255.255.0
Default Route : 192.168.1.3
以上配置完成之后,选择确定按钮.
15) 在win7真实机上,按win+r键,打开运行窗口,输入cmd 并回车
在弹出的dos窗口中,输入命令: ipconfig + 回车
要显示的网络配置数据中,找到 以太网适配器 VMware Network Adapter Vmnet8
可以看到第14步的配置结果.
16) 再输入命令 arp -a 命令(本命令可以输出网络上能寻址到的所有IP地址)
可以找到 192.168.1.6 这一IP地址(也是虚拟机CentOS的IP地址)
输入 ping 192.168.1.6 + 回车 可以看到真实主机win7能ping 通虚拟主机CentOS的IP地址 192.168.1.6
17) 进入到虚拟机CentOS里,打开终端输入 route 命令
在该命令的运行结果中可以看到: Gateway 默认为192.168.1.3
接下来再输入 命令 ping 192.168.1.3 + 回车
可以看到虚拟主机 CentOS能够正常ping 通 真实主机Win7 的IP地址: 192.168.1.3
到此为止,win7真实主机与CentOS 虚拟主机已经双向ping 通。
--------------------------------------------------------------------------
命令行配置: 暂缺
--------------------------------------------------------------------------
关于虚拟机三种上网模式的区别:
Bridge(桥接)模式--直接将虚拟机添加到局域网中,
使虚拟机看起来像网内的一台真实计算机,
虚拟网卡和宿主物理网卡之间不存在名义上的从属关系,
因而需要局域网内具有多余的IP地址能够提供给虚拟机网卡,
如果局域网内严格给每台计算机分配固定的IP,
那这种Bridge模式就基本失效。
在Bridge模式下虚拟机既可以访问到Internet,
也可以同局域网内的其他真实计算机通信;
NAT(网址转换)模式-- 宿主的物理网卡就充当了路由器或交换机的角色,
这时VMware会根据宿主的真实IP提供很多子网IP供虚拟机使用,
这样所有的虚拟机都是通过宿主的网络端口进行对Internet的访问,
但看起来这些虚拟计算机都合法地访问到了局域网或者Internet,
因为他们的IP地址通过NAT技术之后看起来是合法的。
Host Only(仅主机)模式--
本模式下虚拟机之间可以相互通信,
但虚拟机并不能同局域网内的其他真实计算机直接通信,
但该模式下通过宿主访问Internet还是可以的。
VM的虚拟网卡可以被设置成上述的三种网络连接模式,
默认情况下,
VMnet0被设置成为Bridge模式,
VMnet1被设置为Host Only模式,
VMnet8的默认连接方式为NAT模式。
VMnet2-VMnet7和VMnet9这七块虚拟网卡用户可以自定义,
但是在所有的虚拟网卡中仅有一块能被设置为NAT模式。
默认情况就是VMnet8。
用户可以在VMware 编辑 工具栏中查看这些信息。
/*******
如果了解上面所讲的虚拟网卡连接网络的方式之后,
需要实际地来连接网络了。
选择较为简单的Internet连接方式,即NAT模式,
首先在“Virtual Machine Settings”中
设置“Network Connection”方式为NAT模式。
打开Win7的“网络和共享中心”,选择“更改适配器设置”,
如果VMware workstation安装正确的话,
这里应该可以看到VMnet1和VMnet8这两块虚拟网卡。
查看连接有宽带的“本地连接”的属性,
顺便在“网络”选项卡下面的“此连接使用下列项目”中将VMware Bridge Protocol勾选上,
以便以后选用Bridge模式的时候使用此协议。
在“共享”选项卡下面“Internet连接共享”中勾选“允许其他网络用户通过此计算机的Internet连接来连接(N)”,
并同时在“家庭网络连接(H)”中选择VMnet8。
这样设置之后就已经将宿主计算机的网络访问权限与VMnet8共享。
下面需要配置VMnet8的IP地址和掩码等。
首先查看一下VMnet8的网络属性,
同样顺便在“网络”选项卡下面将“此连接使用下列项目”中将VMware Bridge Protocol勾选,
以便日后Bridge模式使用。
查看TCP/IPv4的属性,可以看到IP地址已经自动变为固定的192.168.137.1,
子网掩码已经是255.255.255.0,这些就让其这样设置,暂且不管。
接下来需要在VM中配置VMnet8的IP属性了。
打开VMware workstation-<Edit-<VMware Network Editor,
选择VMnet8,勾选Connect a host virtual network adapter to this network和Use local DHCP service to distribute IP address to VMs。
Subset IP需要与宿主VMnet8的IP在同一地址段,
可填写192.168.137.0,
Subset Mask应与VMnet8的子网掩码相同,即填写255.255.255.0。
打开DHCP Settings,里面的Start IP address填写192.168.137.0,
End IP address填写192.168.137.255,
即可在这一IP段内自动分配给虚拟计算机IP地址。
在NAT Settings里面将Getway IP设置为宿主计算机中VMnet8的IP,
即192.168.137.1。
上述设置总结起来,就是将宿主计算机的物理网卡与VMnet8共享,
VMnet8充当路由器,
而VM中的虚拟计算机通过DHCP自动获得在某一个IP段内的IP地址,
这些虚拟机都通过路由器(VMnet8)连接的IP与物理网卡上的Internet连接。
设置好这些之后,在VMware中启动CentOS,
如果正常的话应该可以ping通网络了,
打开Xwindow里面的浏览器也应该可以开始冲浪了。
如果还连接不上Internet,那可以用root用户(其他用户没有权限修改配置文件)登录CentOS,
检查一下文件系统-<etc-<sysconfig-<network-scripts-<ifcfg-eth0中的bootproto是不是dhcp,
如果不是则修改为dhcp,此外还需要设置onboot = true;
然后用命令service network restart重启网络连接,就可以连上网络了。
*******/
第六章 打包程序 tar
tar(tape archive 磁带归档)
在liunx 系统上,很多程序软件包都是通过tar进行打包发布的。
所以了解tar工具的使用是对于学习linux系统上的软件都非常有帮助
本章将讲解 tar 工具的使用.
包括打包文件,还原文件,查看归档文件内容以及压缩归档文件等
tar是UNIX/Linux操作系统上的一个有着非常悠久历史的经典工具。
至今仍被广泛使用。
其最初的设计是用于将系统中需要备份的文件
打包到磁带上。
随着计算机硬件的发展,现在它被更多地用于磁盘
上的文件备份以及文件的打包管理方面。
tar可以打包整个目录树,把目录下的各级子目录及文件
都打包成一个以.tar为后缀的归档文件,
便于文件的保存和传输,还原的时候,
tar可以把打包文件中的所有文件和目录都还原出来
也可以只还原其中的某些目录或文件。
tar命令本身并不具备压缩文件的功能,
但它可以和其他第三方的压缩程序配合使用
例如经常看到的
.tar.gz 后缀的文件是tar打包后再经gzip压缩
.tar.Z 后缀的文件是tar打包后再经compress压缩
.tar.bz2后缀的文件是tar打包后再经bzip2压缩
tar [选项] tar文件 [目录或文件]
tar [常用选项]:
-c: 创建新的归档文件
-d: 检查归档文件与指定的目录的差异
-r: 往归档文件中追加新文件
-f: 指定要操作的文件名,是必需的参数 -f file
-t: 列出归档文件中的内容
-v: 显示命令执行的信息 ***
-u: 只是当需要追加的文件比tar文件中已存在的文件
版本更新的时候才添加
-x: 还原归档文件中的文件或目录
-z: 使用gzip压缩归档文件 ***
-Z: 使用compress压缩归档文件
-cvf 打包
-uvf 追加
-xvf 还原
-tvf 查看
-zxvf 压缩还原
例如: httpd-2.2.17.tar.gz
tar -zxvf httpd-2.2.17.tar.gz
tar -zxvf apr-1.4.5.tar.gz
tar -zxvf arp-util.1.3.12.tar.gz
tar -cvf 文件名
tar -uvf 某打包文件 某文件
tar -xvf 某打包文件
tar -tvf 某打包文件
[使用方法之一]: 打包文件
使用tar命令,可以把一个目录中的文件和子目录打包
成一个以.tar为后缀的打包文件.
假设系统中有一个 test 目录,
目录中随意放文件或子目录
现在要把这个目录打包成一个名为 test.tar的归档文件
命令如下:
tar -cvf test.tar test
打包后的文件名 需要打包的目录
//该命令的含义是把test 目录下的文件打包成归档文件 test.tar
//tar命令会列出该目录下的所有文件及子目录清单
打包完成之后,
系统就会在当前目录下
生成一个名为:test.tar的归档文件
[使用方法之二]: 查看归档文件的内容
对于通过tar命令打包生成的归档文件,
如果要查看其中的内容
可以使用带 -t选项的tar命令。
tar -tvf test.tar //查看归档文件test.tar的内容
该命令执行之后,
会列出归档文件中打包的所有文件及目录
其输出结果与使用-l选项命令相似.
ls -l
[使用方法之三]: 还原归档文件
对于已经打包好的 .tar归档文件
如果要进行还原,可以使用带 -x选项.
为了检验还原文件的实际效果。
可先把 test 目录进行删除。
删除命令如下:
rm -fR test
再使用tar命令还原归档文件并检查test目录的内容:
tar -xvf test.tar
执行完毕之后,可以用ls 命令进行查看。
[往归档文件中追加新文件]
归档文件创建后,可以通过-r选项在归档文件中追加新的文件
如果文件在归档文件中已经存在,那么就会覆盖原有的文件。
如果要往上例中的test.tar文件中追加 xxx 文件,
命令格式如下:
tar -rvf test.tar xxx(要追加的新文件)
为避免出现追加的文件版本比已有的文件版本旧,
而导致覆盖新版本文件的情况,可以使用-u 选项
使用 -u 选项之后.tar命令会先检查新添加的文件
在归档文件中是否已经存在, 然后比较两者的版本。
如果要添加的文件版本更新,
那么就更新归档文件中的内容,向其中添加该文件。
命令格式如下:
tar -uvf test.tar xxx(要追加的新文件)
打包文件命令的总结:
tar -cvf test.tar test 把test目录打包成test.tar
tar -tvf test.tar 查看test.tar里的文件
tar -uvf test.tar xxx 向test.tar打包文件追加xxx文件
tar -xvf test.tar 把test.tar打包文件进行还原
还原之后可以用 ls -l进行观察
rm -fR test 强制删除test目录
------------------------------------------------------------
使用gzip和gunzip进行压缩
gzip和gunzin 是liux 系统中经常使用的
对文件进行压缩和解压缩的命令,简单方便
但是gzip只能逐个压缩文件,
无法将多个文件或目录压缩成一个文件。
所以gzip一般都是和tar命令配合使用的。
tar 命令提供了一个 -z 选项,
可以把文件和目录打包成归档文件的同时
调用gzip命令进行压缩。
经过gzip命令压缩后的文件是以.gz为后缀的,
使用gunzip进行解压。
gzip和gunzip 使用命令的格式如下:
gzip [选项] [文件名]
gunzip [选项] [文件名]
常用的命令选项如下:
-c : 将输出写到标准输出上
-d : 对压缩文件进行解压缩
-l : 对每个压缩文档,显示下列字段:
压缩后文件的大小,未压缩文件的大小,压缩比和未压缩前文件的名字
-r : 递归对指定目录下各级子目录以及文件进行压缩或解压缩。
-t : 检查压缩文件是否完整
-v : 对每一个压缩和解压缩的文件,
显示文件名和压缩比
-# : 用指定的数字# 调整压缩的速度,
-1或 -fast 表示最快压缩方法(低压缩比)
-9或 -best 表示最慢压缩方法(高压缩比)
系统默认值为 6
使用案例:
以一个实际的目录演示使用 gzip 和 gunzip命令
进行压缩和解压缩操作,
目录包括4个文件和一个子目录
可以先用 ls -l 命令列出所有文件及子目录
选择桌面,创建一个目录,目录名为:test
该目录名下新建4个文本文件,
分别命名为: test_aa,test_bb,test_cc,test_dd
再新建一个子目录,命名为:
test_sub
第一步:压缩 test 目录下的所有文件,
由于该目录下还存在子目录
所以必须使用 -r选项
gzip -r *
gzip命令并不是把多个文件打包成一个压缩文件,
而只是把每个文件都压缩成相应的以.gz为后缀的压缩文件
同时删除源文件
[压缩部分文件]
如果只希望部分文件进行压缩,
可以在gzip命令中明确指定文件列表,
各文件之间可以用空格分隔
格式: gzip file1 file2
[查看压缩文件的情况]
使用 -l命令选项,可以查看到压缩文件的压缩情况
gzip -rl *
在输出结果中,每个压缩文件都做为独立的一行,
其中 compressed 表示压缩后文件的大小
uncompressed 表示未压缩前文件的大小
radio 表示压缩比例
uncompressed_name 表示压缩文件在未压缩前的文件名称
compress --英文:压缩,精简
gzip -rl * 显示当前各目录及子目录压缩情况
gzip -l * 显示当前目录压缩情况,不显示子目录压缩情况
子目录被忽略
[解压缩文件]
使用gunzip命令可以对.gz格式的压缩文件进行解压,
解压完成后,所有压缩文件的.gz文件后缀名都会被去掉
gunzip -r *
提示: 使用带 -d 选择的gzip 命令同样也可以实现该功能
gzip -dr *
作业:
1)熟练掌握
tar -cvf
tar -uvf
tar -xvf
tar -tvf
等四个选项进行打包文件的操作
分别是创建,追加,还原,查看等
2)熟练使用
gzip 压缩,解压,查看三个命令选项
3)在linux 系统中新建一个文件,
里面存放简历,图片之类的文件
然后进行压缩,打包等常规操作
并能做解压,还原打包文件的操作。
----------------------------------------------------------------------------------------------------------
使用zip和unzip进行压缩
很多用户都用过 windows 系统中的 winzip压缩工具,
它用于对zip格式文件进行压缩和解压缩。
在linux 系统中也有支持.zip格式的压缩工具,
它们就是 zip和unzip.
zip 能支持把多个文件和目录压缩到一个文件中,
如果需要在linux和windows系统中传输文件,
可以使用.zip进行压缩
因为该命令与windows 上的压缩工具最兼容。
其命令格式如下:
zip [参数] [zip文件名 [文件1 文件2 ...]]
常用的命令选项如下:
-F: 修复损坏的压缩文件
-m: 将文件压缩之后,删除源文件
-n suffixes: 不压缩具有特定字符串的文件
-o: 将压缩文件内所有文件最后更改时间
设为文件压缩的时间
-q: 安静模式,在压缩文件时候不显示命令的执行过程
-r: 以递归方式将指定的目录下的所有子目录及文件一起处理
-S: 包含系统文件和隐含文件
-t mmddyyyy:把压缩文件的最后修改日期
设为指定的日期
unzip 该命令用于解压缩zip格式的文件,其命令如下;
-l: 列出压缩文件所包含的内容
-v: 显示详细的执行过程
以下是使用案例:基本参照上例gzip命令的使用。
zip命令可以把多个文件和目录打包
压缩到一个.zip文件中,而且不会删除源文件
1)压缩目录下所有文件和目录
zip -r test.zip *
2)压缩部分文件,使用空格分隔多个文件名
zip test.zip file1 file2
3)查看压缩文件的情况
unzip -l test.zip
使用本选项可以观察到的4个字段,从左到右分别是:
文件大小 文件日期 文件时间 文件名
length date time name
deflated --英文:释放
stored --英文:存储
4)解压文件
unzip test.zip
解压文件时,命令会提示是否在替换原文件,分别给出了5种选择
[y]es [n]o [A]ll [N]one [r]ename
----------------------------------------------------------------------
使用bzip2和bunzip2进行压缩
bzip2和bunzip2是linux系统上另外一款常用的压缩工具.
bzip2具有很高的压缩比例,
经其压缩后的文件以.bz2为后缀,
需要由bunzip2命令进行解压。
与gzip一样,bzip2不支持把多个文件和目录打包成一个压缩文件。
所以bzip2一般也是和tar命令配合使用,tar命令提供了 -j 选项
在打包文件的同时调用bzip2进行压缩。
在生成压缩文件后,bzip2命令默认会自动删除源文件。
.bz2格式的压缩文件需要调用bunzip2命令进行解压。
bzip2和bunzip2命令的格式如下:
bzip2 [选项] [文件名...]
bunzip2 [选项] [文件名...]
常用的命令格式选项说明如下:
-c: 将压缩与解压缩的结果送到标准输出。
-d: 解压缩
-f: bzip2在压缩或解压缩时,
若文件已经存在,默认是不会覆盖已有文件。
使用本选项,可以强制bzip2进行文件覆盖
-k: bzip2在压缩或解压缩后,默认会删除源文件。
使用本选项,可以保留源文件
-q: 安静模式
-s: 降低程序执行时内存的使用量(以小内存模式进行压缩解压操作)
-t: 测试bz2压缩文件的完整性
-v: 压缩与解压缩文件时,显示详细的信息
以桌面上的 aa.txt, eee普通文件为例:
采用压缩文件并保留源文件的压缩策略,命令格式如下:
bzip2 -kv aa.txt eee 用空格隔开多个文件名
压缩后可生成 aa.txt.bz2, eee.bz2文件
此时用 ls 进行观察,可以发现保留了各自的源文件
解压文件:
对当前目录下的所有bz2压缩文件进行解压,可以使用如下命令:
bunzip2 -v *.bz2
可以分别使用不保留源文件的压缩策略进行压缩
bzip2 -v *.bz2 --未使用 -k 选项将不保留源文件
------------------------------------------------------------------
使用compress 和 uncompress 进行压缩
compress 是一个相当古老的unix 文件压缩命令,压缩后的文件一般以.Z
为后缀,可以使用uncompress 命令进行解压缩。
与gzip,bzip2一样,如果要把多个文件和目录打包到一个压缩文件中,
必须先使用tar命令打包再压缩,tar命令提供了-Z 选项调用compress.
相对于前面的3种压缩工具,compress的压缩比已经逊色,所以现在使用
compress进行压缩的用户越来越少了。
以下内容简单了解就可以
compress [选项] [文件名]
uncompress [选项] [文件名]
选项说明如下:
-b: 可以设定的值为9-16bits,设定的值越大,压缩的比例就会越高。
系统一般使用的默认值为 16bits
-c: 输出结果到标准输出设备上
-d: 将压缩包解压
-f: 若文件已经存在,则强制覆盖
-v: 显示命令运行的详细信息
使用方法:
仍以上例压缩 aa.txt ,eee 两个文件为例:
压缩:compress -v aa.txt eee
解压:uncompress -v *.Z
gzip gunzip .gz 配合 tar
zip unzip .zip 可以带目录 -r 与win最兼容
bzip2 bunzip2 .bz2
三种常用压缩工具(gzip,zip,bzip2)的总结:
1)在压缩时,是否保留源文件
gzip 不保留源文件
zip 默认保留源文件 带 -m 选项删除源文件
bzip2 默认不保留源文件 带 -k 选项保留源文件
2)在解压时,是否覆盖源文件
gzip 不存在源文件, 所以不存在覆盖源文件问题
zip 给出5个候选选项,询问用户进行选择
bzip2 默认不覆盖源文件 带 -f 选项强行覆盖
3) 查看压缩文件
gzip,zip 都带 -l 选项可以查看压缩文件
例如: gzip -l xxx.gz zip -l xxx.zip
bzip2 不能用 -l 选项命令用来查看压缩文件
4) 解压缩文件
gzip,bzip2 都带 -d 选项可以用来解压缩
例如: gzip -d xxx.gz bzip2 -d xxx.bz2
zip 不能用 -d 选项命令用来解压缩
---------------------------------------------------------------------
第七章 使用RPM软件包
RPM(Red Package Manager)
是RedHat公司开发的一个linux 软件包安装和管理程序。
它的出现解决了linux 下使用传统方式进行软件安装所带来的文件分散,
管理困难等问题。
用户可以方便地在Linux系统中安装,升级和删除软件,
以及在一个统一的界面中对所有的RPM软件包进行管理。
RPM简介: RPM类似于Windows上的添加删除程序,
使用它用户可以自行安装
和管理linux 上的应用程序和系统工具。
在RPM出现前的很长一段时间里,
Linux 操作系统下的软件安装的管理是非常松散的。
存在着各种各样的二进制软件安装包和源代码安装包。
这些安装包的安装方式五花八门,
而且没有一个统一的管理界面。
这就为linux 系统管理管理系统中的软件包带来了很多不方便。
管理员必须手工维护自己操作系统中的软件安装列表,
这个工作量并不小。
Red Hat公司所开发的RPM一经出现,使用这种局面有了很大的改变。
RPM为用户提供了统一的安装和管理界面,
通过它,用户可以直接以二进制的方式安装软件包,
它会自动为用户查询是否已经安装了有关的库文件以及
软件包所依赖的其他文件。
在用户删除程序时,它又会自动地删除有关的程序。
如果使用RPM来升级软件,它会保留原先的配置文件,这样用户就不需要再重新
配置新安装的软件了。
它保留了一个数据库,这个数据库中包含了所有已经安装的
软件包的资料。
通过这个数据库,用户可以方便查看到自己计算机上到底安装了
哪些软件包,
这些软件包分别安装了什么文件,
这些文件又放在什么地方等等。
正是由于RPM的方便及强大的管理功能,
使它得到了越来越多的操作系统平台的支持
除了各种linux 发行版本外,
它还被移植到了SunOS,AIX等其它UNIX操作系统上
它的软件包文件都是以.rpm为后缀名,
一般采用如下的命令格式:
软件包名称-版本号-修正版.硬件平台.rpm
例如:sun-javaadb-client-10.4.1-3.1.i386.rpm
软件包名称为: sun-javaadb-client
版本号为 : 10.4.1
修正版为 : 3.1
硬件平台为 : i386
--------------------------------------------------------
rpm命令的使用方法:
rpm软件包的安装,删除,升级,查看,验证等所有的操作
都是由rpm这一命令来进行的
rpm命令有12种模式,不同的模式有不同的命令格式,
能完成不同的管理功能
其中常用的模式如下:
查询模式: rpm [-q query ] [查询选项] [查询选项]
验证模式: rpm [-V verify ] [验证选项] [验证选项]
安装模式: rpm [-i install] [安装选项] 软件包...
升级模式: rpm [-U upgrade] [升级选项] 软件包...
删除模式: rpm [-e erase ] [删除选项] 软件包...
这5种模式分别对应软件包的查看,验证,安装,升级,删除.
不同模式的rpm命令会使用不同的命令选项。
这其中包括一般选项,选择选项,
查询选项,验证选项,安装选项,删除选项
[一般选项]:可用于rpm命令的所有模式中,
常用的一般选项有;
-h: 用#号显示完成的进度
--keep-temps:保留临时文件,临时文件通常位于/tmp/rpm-*,
这个选项主要用于 debug.
--quiet: 只有当出现错误时才给出错误信息
--version:显示当前使用的rpm版本
[选择选项]:可用于查询和验证模式,常用的选择选项有:
-a:查询所有安装的软件包
-f:查询拥有<文件>的软件包,
也就是说哪一个软件包安装的<解文件>
[查询选项]:可用于查询和验证模式,常用的查询选项有:
-i:显示软件包的信息,包括名称,版本,描述信息 info
-l:列出这个软件包内所包含的文件 list
--provides:显示这个软件包所提供的功能
-R:查询安装该软件包中所需要的其他软件包 requires
-s:列出软件包中所有文件的状态 state
[验证选项]: 只能用于验证模式,常用的验证选项有:
--nodeps: 不验证所依赖的软件包
--nofiles: 不验证软件包文件的属性
[安装选项]: 可用于安装模式和升级模式,常用的选项有:
--force: 同--replacepkgs,--replacefiles,--oldpackage一样
即使要安装的软件包版本已经安装在系统上,
或者是系统上现有的版本比要安装的版本高,
依然要强制覆盖安装
--nodeps: 使用rpm安装前,rpm会检查该软件包的依赖关系,
即正确运行该软件包所需要的其他软件包是否已经安装.
使用该选项将忽略软件包所依赖其他软件强行安装。
但是不推荐这种做法,
因为这样安装的软件多数是不能运行起来的。
--test: 模拟安装,软件包并不会实际安装到系统中,
只是检查并显示可能存在的冲突
[删除选项]: 只能用于删除模式,常用的选项有:
--allmatches: 删除指定名称的所有版本的软件.
默认情况下,如果有多个版本存在时,会给出错误信息
--nodeps: 忽略其他依赖该软件包的软件,强制删除该软件包。
正常情况下不建议这样做,因为删除软件包后,
其他相关的软件就不能运行了。
--test: 不真正删除,只是模拟
-----------------------------------------------------------------
[安装软件包]
要安装一个rpm软件包,
只需要简单输入命令 rpm -ivh 软件包文件
例如:
以lamp文件中的 mysql57-community-release-el6-7.noarch.rpm
文件进行安装
切换到相应目录下,
rpm -ivh mysql57-community-release-el6-7.noarch.rpm
-i : 显示软件包的信息,包括名称,版本,描述信息 info
-v : 显示安装过程详细信息
-h : 用#号显示完成的进度
卸载软件:
rpm -e 软件包名称 (普通卸载)
rpm -e --nodeps 软件包名称 (强制卸载)
软件包的安装过程分两个阶段:
首先是安装准备阶段,preparing --英文:准备
在该阶段会检查磁盘空间,软件包是否已安装,依赖的软件包是否已安装等
准备阶段通过后才会进行软件包的安装。
RPM命令会显示相应的进度条.
如果安装过程中没有出现任何错误信息,则表示安装正常完成。
有时候,为了检查一个软件包的安装是否会有冲突,
可以使用-test选项进行模拟安装,使用该选项后软件包将不会被实际安装在系统中。
模拟安装的使用方法:
rpm -ivh --test 软件包名称
如果在软件包的安装准备阶段检查时,
发现要安装软件包在系统中已经被安装,
那么可能会出现下列信息:
package 软件包名称 is already installed (已经安装)
如果要覆盖已安装的软件包,可以使用--force 选项
rpm -ivh --force 软件包名称
RPM软件包可能会依赖于其他软件包,也就是说要在安装了特定的软件包之后
才能安装该软件包。
如果要安装的准备阶段检查发现依赖的软件包并未安装,
那么可能会出现相应的报错信息
如果强行安装的话,可使用 --nodeps 选项
rpm -ivh --nodeps 软件包名称
但并不推荐这种做法,因为强行安装后的软件可能无法正常使用。
--------------------------------------------------------------------
[查看RPM软件包]
使用rpm命令可以查看指定软件包的详细信息,安装的文件清单,
依赖的软件包清单,某个软件包是否已经安装,系统中所有已安装软件包清单等信息
查看软件包的详细信息,使用命令:
rpm -iq 软件包名称
如查看上例中已经安装的mysql57-community-release
rpm -iq mysql57-community-release-el6-7.noarch
[查看软件包的文件清单]
查看系统中已安装的某个软件包的文件清单
rpm -lq 软件包名称
[查看软件包所依赖的其他所有软件包]
rpm -qR 软件包名称
[查看系统中所有已安装的软件名清单]
rpm -aq
rpm -aiq 输出已安装的软件包详细信息
提示:可带grep 选项,进行过滤
[升级软件包]
对于已经安装的RPM软件包,如果由于版本过低,希望升级到一个更高的版本
可以使用带 -U选项的rpm命令。
rpm -Uvh 软件包名称
[删除软件包]
使用删除模式的rpm命令可以删除系统中已安装的软件包。
例如要删除上例中的 mysql57-community-release-el6-7.noarch
使用命令如下:
rpm -e mysql57-community-release-el6-7.noarch
与安装模式一样,删除模式的rpm命令也可以用 --test选项
模拟删除已安装的软件包。
rpm -e --test 软件包名称 (模拟删除)
rpm -e --nodeps 软件包名称 (强制删除)
在删除已安装的软件包前,系统会首先检查该软件包中是否有被其他软件包
所依赖的软件,如果存在依赖关系,则系统会拒绝删除该软件包。
这是因为一旦该软件包被删除,那么其他依赖它的软件包将无法正常使用。
如果强行删除该存在依赖关系的软件包,
可使用 -- nodeps 选项强行删除,
rpm -e --nodeps 软件包名称
但这样做很可能导致其他软件包不能正常使用。
安装在CentOS 系统上安装 gcc
回到你的根目录下,在桌面上新建rom文件夹
mkdir rom
直接把虚拟光驱里的内容全选+复制 到 rom 目录下
命令行进入到 rom 目录下,运行以下代码
以下代码全都是:
rpm -ivh 软件包名称-版本号-修正版本号.应用平台.rpm
#cd Packages/
#rpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpm
#rpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpm
#rpm -ivh glibc-devel-2.12-1.132.el6.x86_64.rpm
#rpm -ivh libgomp-4.4.7-4.el6.x86_64.rpm
#rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
#rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
#rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
#rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm
#rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm
#rpm -ivh libstdc++-devel-4.4.7-4.el6.x86_64.rpm
#rpm -ivh gcc-c++-4.4.7-4.el6.x86_64.rpm
搭建LAMP环境时,需要按照一定的顺序进行安装。
建议的安装顺序是:Apache > MySQL > PHP
安装之前,需要的三种软件包清单如下:
Apache --httpd-2.2.9.tar
MySQL --mysql-5.0.41.tar
PHP --php-5.2.6.tar
其他软件包暂不安装
-----------------------------------------------------------------------------
请按以下步骤,仔细操作安装命令
以上三种软件包 全部解压到 /usr/local/src 目录下
解压采用命令: tar -zxvf 软件包名称
此时 /usr/local/src目录下应当存在解压好的
httpd-2.2.9 mysql-5.0.41 php-5.2.6 三种目录
--------------------------------------------------------------------------------
[安装Apache 服务器软件]
[第1步] 解压到 /usr/local/src/httpd-2.2.9目录下
[第2步] 从图形化操作,到httpd-2.2.9目录下,就会发现该目录下有很多文件及目录
从中可以找到 configure文件,该文件是shell script 脚本文件,
软件配置和安装的过程中,
都被configure 脚本中一系列命令行选项控制。
可通过 ./configure --help 命令了解所有可用的编译选项及简短说明。
[第3步] 回到命令行界面中,切换到 httpd-2.2.9目录下,输入以下命令:
./configure \ 注释:命令行中使用\号可以把一个命令换成多行
--prefix=/usr/local/apache \ 注释:指定Apache软件的安装位置
--sysconfdir=/etc/httpd/conf\ 注释:指定Apache服务器的配置文件存放位置
--with-z=/usr/local/zlib/ \ 注释:指定zlib库文件的位置
--with-included-apr \ 注释:使用捆绑APR/APR-Util的副本
--disable-userdir \ 注释:请求的映象到用户特定目录
--enable-so \ 注释:以动态共享对象(DSO)编译
--enable-rewrite=shared \ 注释:基于改写规则的操控
--enable-static-support 注释:建立静态链接版本的支持
最后一行可以不加 \ 号进行拐行
[第4步] 以上./configure 命令编译完成之后,输出最后一行是:
config.status: executing default commands
该信息表示可以执行默认的命令行.说明以上的配置工作正确完成
可输入命令: make (编译) 说明:进行编译
如果到此出现错误,可以先用 make clean
再用 make
[第5步] 输入命令: make install 说明:根据配置和编译过程,在linux中通过本命令,将软件安装到指定的位置
[第6步] 上面安装成功之后,进入到 /usr/local/apache 路径下,
输入 ls 命令,查看目录,应为以下目录:
bin build cgi-bin error htdocs icons include lib logs man manual modules
[第7步] 回到 /etc/httpd/conf 目录下
查看配置文件 httpd.conf 和 extra 子目录是否存在
如果存在httpd.conf 可以用 vim httpd.conf 进入该配置文件,观察配置
[第8步] 启动apache 服务器
进入到 /usr/local/apache 目录下
运行如下命令:
/bin/apachectl start 启动apache
[第9步] 查看80端口
netstat -tnl | grep 80
[第10步] 在浏览器地址栏,输入 http://localhost ,或者输入 http://127.0.0.1
都会出现 It works ! 图标,表明 Apache 已经安装成功
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
[安装MySQL数据库管理系统]
[第1步] 首先要为mysqld增加一个用户名和用户组,用户名和组名都命名为: mysql
以根用户身份登录系统
分别运行以下2个命令:
1)groupadd mysql //添加用户组名 mysql
2)useradd -g mysql mysql //添加用户mysql 并加到 mysql 组中
以上两个命令运行完毕之后,可以分别进入到 /etc/passwd /etc/group 文件中观察
[第2步] 进入虚拟光驱文件目录中,把里面所有文件都复制到 Desktop/abcd 文件里,此操作如果已经完成,则不必再操作
cd abcd 目录下
ls | grep ncurses 过滤含有 ncurses 文件
找到 ncurses-devel-5.7-3.20090208.el6.x86_64.rpm 文件
rpm -ivh ncurses-devel-5.7-3.200908.el6.x86_64.rpm //安装该文件
[第3步] 以上软件完成之后,切换到 /usr/local 目录下,新建mysql 目录 mkdir mysql
--注意此目录跟apache目录是平级关系
--然后在 /var/lib 目录下新建 mysql子目录备用
[第4步]
LAMP.zip
解压方法: unzip LAMP.zip
从桌面上的LAMP文件夹中,复制 mysql-5.0.41.tar.gz文件到 /usr/local/src目录下
命令: cd /root/Desktop/LAMP/
cp mysql_5.0.41.tar.gz /usr/local/src/ --复制到 /usr/local/src目录下
cd /usr/local/src/ --切换到/usr/local/src 目录下
tar -xvf mysql-5.0.41.tar.gz --解压后得到mysql-5.0.41目录
切换到 /usr/local/src/mysql-5.0.41目录下
输入以下命令:
./configure \
--prefix=/usr/local/mysql \ //指定mysql安装目录
--with-extra-charsets=all \ //安装mysql时,安装所有的字符集
--bindir=/usr/local/mysql/bin //指定mysql用户执行文件的位置
----以上是节选参数,一般不用加上
--sbindir=DIR \ //指定mysql系统管理命令的安装位置
--libexecdir=DIR \ //指定mysql程序执行文件的安装位置
--infodir=DIR \ //指定mysql信息文档的安装位置
--mandir=DIR \ //指定mysql的man 帮助文档的安装位置
回车之后,系统开始了mysql的检查安装步骤,
到了最后一行会出现 : Thank you for choosing MySQL ! 提示信息
[第5步] 手工在 /usr/local/mysql 目录下新建 var目录
cd /usr/local/mysql --切换到mysql目录下
mkdir var --创建var 子目录
cd /usr/local/src/mysql-5.0.41 返回到 mysql-5.0.41目录下
然后再 make 开始编译
[第6步] make install 开始安装软件到指定的位置
[第7步] 进入到源码包里,/usr/local/src/mysql-5.0.41
找到 support-files 目录中的 my-medium.cnf 文件,
复制到 /etc 目录下
并命名为 my.cnf 文件
解释: my_medium.cnf 文件为mysql 中型规模大小的配置文件
cd /usr/local/src/mysql-5.0.41/support-files --切换到源码包指定的目录下
cp my-medium.cnf /etc/my.cnf --复制带改名操作
[第8步] 创建mysql授权表,进入到安装目录 /usr/local/mysql
cd /usr/local/mysql
ls -l --查看所有文件及目录
执行
# bin/mysql_install_db --user=mysql //创建授权表
如果没有安装过mysql,必须要创建授权表.
mysql_install_db 文件用来初始化mysql数据库的授权表,
其中存储了服务器的访问允许
运行完毕之后,需要手动重启服务器 重启命令: reboot
重启之前,先保存所有文件
[第9步] 采用 root 用户身份登录 centOS,打开终端,切换到 usr/local/mysql目录
回到 usr/local/mysql 目录下 命令: cd /usr/local/mysql
chown -R root . //将文件的所有属性改为 root 用户
chown -R mysql var //将数据目录的所有属性改为 mysql 用户
chgrp -R mysql . //将文件组属性改为 mysql
以上命令运行完毕之后 可写命令 : ls -l 进行观察 在该目录下共有10个子目录
[第10步] 以上各项准备完成之后,可以使用命令来启动mysql服务。
命令如下:
在 usr/local/mysql 目录下
输入: bin/mysqld_safe --user= mysql &
[第11步] mysql 数据库服务启动之后,查看一下它的端口3306是否打开。
输入命令: netstat -tnl |grep :3306
运行命令如果出现下面的信息,表明mysql服务启动成功
tcp 0 0.0.0.0 :3306 0.0.0.0:* LISTEN
[第12步] 使用mysqladmin 验证服务器在运行中 可做简单的测试
bin/mysqladmin version //输出mysql版本信息
bin/mysqladmin variables //输入mysql内部参数信息
[第13步] 初次登录mysql 是没有密码的。可以在系统中以root 用户身份,进行登录mysql
bin/mysql -u root 回车
以上命令运行完毕可以直接登录mysql
[第14步] 为防止有匿名帐户的存在,它有全部的权限。
所以要删掉该用户,以提高mysql的安全性。
在mysql 执行语句:
delete from mysql.user where host='localhost' and user='';
flush privileges ; //重新修改权限,相当于刷新权限
[第15步] 指定 mysql 登录的密码
在mysql里输入命令: mysql>set password for 'root'@'localhost' =PASSWORD('root');
特别提示:set password 指定密码命令,
一定要使用PASSWORD('你自定的密码字符')函数来加密密码;
这里是给localhost 域设置了密码'root'.
[第16步] 退出mysql 使用命令 exit 或 quit ,还可以按 ctrl+c
[第17步]
cd /usr/local/mysql
因为设置过了 mysql的登录密码,
所以再次使用原登录命令 -u root 已经不能再进入mysql ,必须输入密码
完整命令如下:
bin/mysql -u root -h localhost -p //回车之后进入mysql 客户端,
enter password: //在:提示符后,输入密码 root,回车可以再次进入mysql
[第18步] 关闭mysql 服务器
在命令行中使用mysql服务器的 mysqladmin命令,
通过 -u 参数给出mysql数据库管理员用户名root
通过 -p 参数给出密码,即可关闭MySQL服务器
完整命令如下: bin/mysqladmin -u root -p shutdown 回车
enter password: //输入密码,以回车结束即可关闭mysql
netstat -tnl | grep :3306
[第19步] 设置mysql服务器开机自启动,
进入到mysql源码目录中 /usr/local/src/mysql-5.0.41
将子目录support-files下的mysql.server 文件复制到 /etc/rc.d/init.d 目录中,
并重命名为 mysqld
完整命令如下:
cd /usr/local/src/mysql-5.0.41 回车
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
是否复制及改名成功,可进入到 /etc/rc.d/init.d 目录下, ls 就可以观察到 mysqld
[第20步] 修改 /etc/rc.d/init.d/mysqld 文件的权限
chown root.root /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
修改完成可以用 ls -l | grep mysqld 命令查看权限
[第21步] 使用chkconfig 命令设置在不同系统运行级别下的自启动策略.
首先使用 chkconfig --list | grep mysqld
回车之后不返回任何消息,表示没有增加对mysqld的服务
再使用 chkconfig --add mysqld 命令增加所指定的mysqld 服务
让chkconfig 指令可以控制mysqld ,
并同时在系统启动的叙述文件中增加相应数据
使用命令如下: chkconfig --add mysqld
再次使用 chkconfig --list | grep mysqld 可以观察有关 mysqld 的一行数据
mysqld 0:off 1: off 2:on 3:on 4:on 5:on 6:off
从左到右的0-6 分别表示 init 0 - init 6
chkconfig -level 3 mysqld on //代表运行级别为第3等级 init 3 字符模式
chkconfig -level 5 mysqld on //代表运行级别为第5等级 init 5 图形模式
上面两条命令表示在字符模式和图形模式启动时,自动开启 mysqld 服务
[第22步] 再使用chkconfig --list 命令检查设置
[第23步] 分别使用字符,图形模式启动系统,并观察 mysql 是否自启动。
判断mysql自启动,只要输入命令:
netstat -tnl | grep 3306 如果有返回的信息,表示mysql跟随系统自启动
chkconfig --list | grep mysqld
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
[安装PHP]
预装 libxml2-2.6.30.tar.gz
在 /usr/local/ 目录下 新建 libxml2 子目录, 跟 apache,mysql平级
cd /usr/local/ 回车进入
mkdir libxml2 创建 libxml2 子文件夹
把桌面上的 LAMP目录里 libxml2-2.6.30.tar.gz 复制到 /usr/local/src/
cp /root/Desktop/LAMP/libxml2-2.6.30.tar.gz /usr/local/src
复制完成后,切换到 /usr/local/src/目录
tar -xvf libxml2-2.6.30.tar.gz --解压 得到 libxml2-2.6.30 目录
cd libxml2-2.6.30 切换到该目录中
./configure --prefix = /usr/local/libxml2 回车 指定安装到libxml2目录
make && make install 编译及编译安装一并运行
-----------------------------------------------------------------------------------
[第1步]
把桌面上的 LAMP文件包中的 php-5.2.6.tar.gz
复制到 /usr/local/src目录下
进入到软件源码安装包目录中,这里是: /usr/local/src 目录,
tar -xvf php-5.2.6.tar.gz 解压后得到 php-5.2.6 目录
找到解压好的php-5.2.6,进入到该目录里.
[第2步] 使用./configure \ 命令配置并检查安装需要的系统环境,并生成安装配置文件。
完整的命令行如下:
./configure \
--prefix=/usr/local/php \ //指定php5的安装路径
--with-config-file-path=/usr/local/php/etc \ //指定php配置文件存放的路径
--with-apxs2=/usr/local/apache/bin/apxs \ //指定php查找Apache2的路径
//注意安装apache的路径,
//参考apache安装方法的第3步
--with-mysql=/usr/local/mysql \ //指定php查找mysql的路径 原理同上步
--with-mysqli=/usr/local/mysql/bin/mysql_config \ //激活新增的MySQLi功能
--enable-mbstring=all \ //激活多字节功能
--enable-sockets //激活socket通信特性功能
出现报错信息的话,进入到 桌面目录的Packages 目录 下
rpm -ivh libxml2-devel-2.7.6-14.el6.x86_64.rpm --force --nodeps
cd /usr/bin
ls -l 查看是否有 xml2-config
[第3步] 使用 make 命令编译源代码文件,并生成安装文件。
如果不是第一次安装php,可能会碰到报错信息,
可以使用 make clean 清除原安装文件,再重新使用 make 命令。
[第4步] 使用 make install 命令正式进行安装
[第5步] 安装完毕之后,需要建立php配置文件,该配置文件的作用
跟win服务器里的 php.ini配置文件的作业相同
进入到源代码包路径下,路径为: /usr/local/src/php-5.2.6
找到 php.ini-recommended 文件
复制到 指定的目录 /usr/local/php/etc(见第2步配置) 中,并改名为: php.ini
[第6步] 整合Apache与PHP
进入到Apache配置文件的路径 /etc/httpd/conf
vim /httpd.conf
查找AddType application/x-gzip .gz .tgz //在本行下面添加两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
保存并退出 vim
[第7步] 配置完成之后,必须重启apache服务(这点跟win操作系统配置apache文件是同样的原理)
重启命令:
/usr/local/apache/bin/apachectl stop //先停止 apache 服务
/usr/local/apache/bin/apachectl start //再启动 apache 服务
可能出现的问题:
1) httpd: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
此问题是:不能可靠的确定服务器完整合格的域名,解决方法是开启服务器的域名
解决办法:按第6步操作,进入vi,
找到 #ServerName www.example.com:80 本行
去除前面的 # 号,保存并退出 vi。重启 apache服务(参考第7步)
ServerName localhost:80
2) httpd: httpd (no pid file) not running
此问题是:没有httpd的进程文件,不能运行httpd服务
解决办法:
进入到 /usr/local/apache/logs 目录下
在该目录下运行 ls 命令
此时出现2个文件,分别是: access_log,error_log这两个文件。
(如果正常情况下应该还有第3个文件:httpd.pid)
vim 进入 error_log 文件(错误日志)
[error] [client 127.0.0.1] File does not exist: /usr/local/apache/htdocs/favicon.ico
此时观察 [error]错误提示,在这里是找不到 favicon.ico文件,该文件是图标文件
指定放在/usr/local/apache/htdocs目录下,
可以从外部真实机上,下载该文件,保存到虚拟机指定的目录下,然后再重启apache服务
[第8步] 测试index.php是否能正常运行
在 /usr/local/apache/htdocs 目录下,新建一个 index.php文件,
在index.php文件中,输入以下代码:
<?php
phpinfo( );
?>
[第9步] 保存之后,可回到图形化桌面环境中,找到浏览器,
打开并输入: http://127.0.0.1 或 http://localhost (都不用输入/index.php)
网页会正常显示 php服务器变量信息
LAMP的环境安装成功。
[第10步] 可参考win服务器上的apache 配置文件,
配置DocumentRoot等其它选项
配置完成之后,
必须保存并重启apache 服务,
这样新的配置才能生效。
重启apache操作步骤:
/usr/local/apache/bin/apachectl stop //先停止 apache 服务
/usr/local/apache/bin/apachectl start //再启动 apache 服务
/usr/local/apache/bin/apachectl restart //直接重启 apache 服务
--------------------------------------------------
以下是常用的重启命令:
1)重启系统: reboot 或 init 6
2)重启网络服务 service network restart(可换 stop|start)
服务法:
----------------------------------------------------------
3)重启Apache服务 service httpd restart(可换 stop|start)
4)重启MySQL服务 service mysqld restart(可换 stop|start)
------------------------------------------------------------
脚本法:
apache /etc/init.d/httpd restart (可换 stop|start)
mysql /etc/init.d/mysqld restart (可换 stop|start)
win2003 服务器操作系统:
C: 系统盘
E: /WWW/ --工作盘
/Server
/Apache
/MySQL
/PHP
/Zend Framework
/Web --开发作品
F: 备份盘
-----------------------------------------------------
/usr/local/src --软件源代码安装包路径(目录)
/httpd-2.2.9/
/mysql-5.0.41/
/php-5.2.6/
/usr/local/apache
/usr/local/mysql
/usr/local/php
/usr/local/xxx(xxx为需要安装的软件名称,在这里单独建立目录)
/usr/local/web --开发路径(目录)
搭建好LAMP开发环境的,请试着写一个留言本程序,
能添加留言入库就行,
最好能使用循环,从数据库里提取数据
数据库可以简单创建,只用于简单测试LAMP开发环境的使用。
库名 :lamp_test
表名 :liuyan
列名1:ly_id int not null auto_increment primary key, //留言编号
列名2:ly_title varchar(100) not null, //留言标题
列名3:ly_body varchar(255) not null, //留言内容
列名4:ly_time datetime not null. //留言时间
今日下午的教学任务:
全部完成LAMP开发环境的搭建,
不能有任何借口推廷
软件开发公司招聘: 北京昌平回龙观
java运维 2 名
php 4 名
linux 搭建 2 名
产品经理 2 名
可随时入职者优先,别墅式办公环境,零售饮料不限
每日餐补,上五休二,周末加班不强制
薪资6-20k(税后),弹性工作制,交通补助
//
--------------------------------------------------
挂载光驱
在 /home目录下,新建一个目录
mkdir /root/cdrom
mount -t iso9660 /dev/cdorm /root/cdrom
安装 gcc 文件