复习:Linux环境和基本命令
1、简述Linux在虚拟机中安装步骤(不包括放入iso镜像文件后的步骤)。
处理器设置、内存、磁盘(分区)、网络等
2、查看Windows和Linux系统的IP地址命令?
Windows: ipconfig
Linux/Unix: ifconfig Unix: ifconfig -a a表示all 所有的
3、登录Linux/Unix有哪些方式?
1)本地登录 在主机面前,之间操作
A. 字符界面 特点:使用大量的命令来操作和管理OS
B. 图形界面 好处:直观 缺点:费资源
2)远程登录 通过网络,在其它机器远程登录 telnet
A. 字符界面 (最常用) 好处:省资源,随处可用
B. 图形界面 缺点:需要在客户端安装特殊的软件 更麻烦
结合小工具: SSH
4、命名的基本组成? Linux/Unix 区分大小写 -F -f
Windows中命令 不区分大小写
命令 [选项] [参数]
ls -l
ls -F
ls -al
javac -d . Hello.java JDK命令
cat Hello.java
5、写出一些Linux命令:
1)配置IP地址: netconfig
2)重启网络服务:service network restart
3)查看网络是否连通:ping id地址
4)停止当前进程组合键:ctrl + c (Windows中也支持)
前提:在控制台中使用
原理:在控制台中执行ping命令,会启动一个进程,占据当前终端,通过ctrl+c 即可结束当前进程,恢复终端。
5)挂起当前进程的组合键:ctrl + z 也能交出终端
6)关闭防火墙命令:iptables -F
重新启动Linux,还需要关闭
7)我是谁? 查看当前登录用户信息: who am i
(Linux/Unix是基于用户权限保证环境的安全,认清身份)
8)查看当前已登录的所有用户:who (Linux/Unix多用户系统)
9)我在哪儿?查看当前工作目录 pwd
10)查看目录下的资源(文件和目录):ls -l (linux简写 ll)
11)改变工作目录:cd
cd .. 退回上一次目录
cd 目录名 进入下一层目录
cd 决定路径 直接进入某个目录
一、软硬件体系结构
1、硬件体系:
(I/O进行交互)
输入设备 ------- 主机 ------输出设备
(鼠标、键盘等) (显示器、打印机等)
(CPU 内存 硬盘)
2、软件体系:以主流的B/S架构系统为例,三层架构
Client ----- Application Server ----- DB Server
客户端浏览器 应用服务器 数据库服务器
Windows Linux/Unix Linux/Unix
分开部署,减轻DB的负担,增加并发量
_____________________________
AUT 被测系统
二、Linux/Unix系统基本层次结构
从外到内:
应用程序 <-> Linux操作系统 <-> 硬件
(Shell <-> Kernel内核)
1、Shell (直译:外壳) 命令解释器 (翻译、解释命令)
介于 用户 和 内核之间,提供与系统的命令交互。
shell本身也是一个进程,表示形式:终端、命令行风格
常见的shell类型:bash csh sh (都是命令 可执行文件)
类似于Windows: cmd 命令行窗口
对应:C:/windows/system32/cmd.exe 就是一个可执行文件
查看当前是什么shll, 使用命令:ps (查看当前部分进程)
进程id 伪终端号 启动的命令
PID TTY TIME CMD
2648 pts/0 00:00:00 bash 当前shell进程
3089 pts/0 00:00:00 ps
可以在不同shell之间切换:
csh
sh
bash
不同的shell,理解命令的方式略有差异,比如csh偏向于C语言语法
推荐使用bash,比较方便
shell层层创建(原理:创建子进程,exit可返回上一层)
登录系统后,有默认shell: 登录shell (login shell) 目前bash
此时exit,则推出登录
PID TTY TIME CMD
3118 pts/0 00:00:00 bash
3153 pts/0 00:00:00 bash
3174 pts/0 00:00:00 csh
3194 pts/0 00:00:00 sh
3195 pts/0 00:00:00 ps
2、Kernel 内核,和硬件打交道,比较底层。
(把硬件管理起来,将硬件屏蔽掉)
管理内容:交换区 swap space、文件系统 File System等。
Linux内核实现了五大功能:
1)进程/处理器管理
2)内存管理
3)接口管理
4)文件管理
5)设备管理
查看当前版本:uname -r 2.4.20-8
内核版本的组成:主版本号.次版本号.修订次数
次版本号为奇数,版本相对不稳定 2.5.10
次版本号为偶数,版本相对稳定 2.6.10
3、File System 文件系统:对Linux/Unix中的文件进行管理。
文件:包括文件、目录,以及外部设备也当做文件来管理。
原因:以文件方式管理比较简便,一视同仁
三、Linux的通用特性
1、支持多用户
2、支持多任务
3、支持用户界面 (良好的交互)
4、硬件的支持
5、网络连接
6、可安装网络服务
7、应用程序的支持
四、Linux/Unix的基本命令
1、执行命令,就会执行一个可执行文件,会启动一个进程。
比如 ps ls
sleep 5 启动sleep进程,睡觉5秒 单位:秒
ctrl + c 结束当前进程,交回终端
ctrl + z 挂起当前进程
2、man 命令 (相当于帮助文档 手册)
Linux/Unix中针对各种命令提供手册,manual 帮助手册
查阅ls命令的功能:
man ls
控制方式: 空格 --- 翻页
回车 --- 跳行
q --- 退出 quit
3、ls命令 查看目录下的内容
1)ls -l 以长格式显示文件(use a long listing format)
linux中可简写为ll
文件类型 权限 属主 属组 文件大小 最后一次修改时间
-rw-r--r-- 1 root root 16012 9月 23 22:28 abc.txt
硬链接数 文件/目录名
(不要求)
文件类型:
- 普通文件
d 表示目录
除了文件名之外的所有信息:文件的属性
属主:由哪个用户user创建的文件 owner 拥有者
属组:属于哪个用户组 group
文件大小:单位 字节Byte
2)ls -a a就是all的意思
显示目录下所有内容,包括隐藏文件和目录。
隐藏文件:以 . 开头的文件
3)ls -al 选项可以组合搭配使用 (功能叠加)
4)ls -R 文件全部展开 (当前目录及子目录的资源分布)
5)ls -t 按照实际先后(文件/目录的最后一次修改时间)
6)ls -lt 结合长列表方式、按照时间排序
7)ls -F 可以查看文件类型
普通文件 无后缀显示
目录 /结尾
可执行文件 *结尾
cd到/usr/bin目录下,查看文件类型
4、clear 清屏 Windows: cls Sqlplus: clear screen
Linux/Unix发展和厂商的产品介绍:
1969 Unix
|
------------------------------------
| | | |
IBM AIX Sun Solaris HP UX BSD
Minix好比小型的Unix (Linux好比山寨版Unix)
Linus 1991 1994 Linux(Linux is not Unix) 吉祥物:企鹅
|
-------------------------------------
| | | |
Red Hat红帽 Red Flag 红旗 S.U.S.E Ubuntu 乌班图
开源 起源于德国
提供图形界面
提供大量服务来盈利
五、Unix和Linux操作系统的版本:
1、Unix: IBM-AIX、Oracle Sun-Solaris、HP-UX、Minix
2、Linux: Red Hat、Red Flag、SUSE、Ubuntu
六、Linux操作系统分区
1、Linux中,所有的设备、分区都以 系统文件 形式存在。
优点:文件可读、可写、可设定权限,高透明的管理
2、Swap分区: 交换分区、虚拟内存
作用:将磁盘空间当做内存使用,扩展内存空间,但速度明显下降
应用场合:当Linux的物理内存不够时,在磁盘中开辟一块空间,放置内存中的数据。(安装Linux时指定:2G左右,一般为物理内存的2倍,VM内存 1G)
1)如果适当使用,属于正常系统状态
2)如果大量使用swap空间,说明系统内存严重不足
3、磁盘文件命名规则:
hda1:
1) hd -- IDE硬盘
2) a -- 第一块硬盘
3) 1 -- 第一个分区
sdb3:
1) sd -- SCSI硬盘
2) b -- 第二块硬盘
3) 3 -- 第三个分区
4、挂载点:就是目录。系统中相应的设备文件要挂载到相应目录中,才能继续使用。
(比如:光盘、U盘、硬盘、都被看做文件,需要挂载)
mount命令 用来挂载
5、每一块硬盘最多4个主分区(包括扩展分区)
比如: 1 2 3 4
主分区 扩展 扩展 扩展
比如: 1 2 3 4
主分区 主分区 扩展 扩展
1)主分区:可以拿来直接使用
用途:计算机用于启动操作系统,系统启动程序、引导程序,放于主分区中。
细节:Linux规定主分区(扩展分区)占用1~16号码的前4个
SCSI硬盘: sda1 dsa2 sda3 sda4
剩下sda5~sda16 逻辑分区占用
2)扩展分区:不能直接使用,需要进行逻辑分区后再使用
6、文件:包括文件 和 目录(文件夹)
File Directory
目录也是一种特殊的文件:可以有子目录和其它文件
七、Linux/Unix常用命令
1、查看磁盘空间 fdisk -l
应用场合:当系统突然变慢或性能不佳,可以查看Linux服务器的磁盘空间,确定是否磁盘瓶颈(空间不足)。
练习:查看磁盘空间是否占满
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 268 2048287+ 82 Linux swap
/dev/sda3 269 1044 6233220 83 Linux
Blocks: Data Block 数据块
Id: idle 表示空闲的磁盘 83%的空间可用
2、mount 挂载 显示有效磁盘分区的挂载情况
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
3、查看文件的内容: cat (适合查看小文件)
# cd /root
# ls
# cat install.log
# date 查看日期
# cal 查看本月日历
# cal 2014 本年日历
# cal 10 2014 某年某月
平时命令执行的结果默认向 终端 输出。(终端-标准输出)
> 输出重定向:将输出的结果重新导向到文件中,而不是终端
# date > 1.txt
将date的结果写入1.txt文件中
# ls -l
# cat 1.txt
# cal > 1.txt
# cat 1.txt
> 输出重定向,新的会覆盖旧的
>> 输出追加重定向,向原有文件追加内容
# date >> 1.txt
# cal 10 2014 >> 1.txt
# cat 1.txt
4、自动补全功能:Tab键
# cat 1 Tab 会补充完整的文件名
# cat 1.txt
5、目录常见概念
1)绝对路径:表示从/开始到具体的目录或文件的路径
/etc/passwd
2)当前路径:表示当前所在的目录的路径 pwd查看
/etc
3)相对路径:相对于当前路径下的简短路径
passwd
../root/1.txt (..回到 /下 root进入其中,找到1.txt)
比如目前在/root下 (当前路径)
需要表示/etc/passwd ?
1)绝对路径: /etc/passwd (特点:/ 开头)
2)相对路径: ../etc/passwd
4)主目录:用户登录到Linux/Unix系统后,默认所在的目录
Home Directory (家目录)
该目录下用户拥有大量的操作权限,出了此目录,则处处受挫
主目录:在创建用户时分配 目录名
一般每个用户在/home目录下,存在一个与用户名相同的目录名。
root:x:0:0:root:/root:/bin/bash
root用户 主目录 登录shell
技巧:想快速回到主目录
cd 回车 或 cd ~
说明:~ 代替主目录
echo ~ echo 回声
echo abc
5)当前目录: . cd . ./1.txt
6)上一层目录: .. cd .. 退回上一层目录
6、创建目录:mkdir 目录名
# cd 回到主目录
# mkdir test 创建一个test目录
# ls -l
# cd test
# ls 什么都没有
# ls -la 只有 . 和 ..
练习:在test目录中继续创建其它目录层次
# mkdir dir1/dir2
mkdir: 无法创建目录‘dir1/dir2’: 没有那个文件或目录
注意:Linux/Unix中,需要加 -p选项,才可创建一个目录层次
# mkdir -p dir1/dir2 一气呵成
# ls -R 查看目录层次
回到test下
# cd ~/test
# mkdir dir3 dir4 dir5 依次创建三个目录,空格分隔
在主目录下新建一个game目录
# mkdir ~/game
7、切换到图形界面: startx
# startx 在虚拟机中启动图形化界面,观察目录结构
切换回字符界面:点击红帽子 -> 注销
8、新建文件: touch 文件名
说明: 如果文件名不存在,创建一个新的、空的文件
如果文件名存在,只会修改文件的最后一次修改时间
# cd
# cd test
# date > 1.txt 通过重定向生成一个1.txt文件
# ls -l 1.txt
# touch 2.txt 创建一个空文件
# ls -l 2.txt
# touch 1.txt
# ls -l 1.txt 1.txt最后一次修改时间 更新了
# cat 1.txt 文件内容不变
9、Linux/Unix文件、目录的命名规则
1)区分大小写
2)除了/以外的的字符
3)包含空格,需要\ 转义 或 双引号 " "
4)以.开头的名称,具备隐藏属性 (隐藏文件、目录)
5)Windows用后缀来区分不同的文件类型 *.txt *.exe *.doc
Linux/Unix则不需要,后缀只属于文件名的一部分,主要用于提示文件类型(见名知意)
比如:文本文件 file1 file1.txt file1.abc
f1.sh (shell脚本文件 可执行)
10、新建文件 my file
在~/test目录下
# touch my file 会依次创建两个空文件
# touch my" "file 创建带有空格的文件
# touch my\ file1 使用转义符
11、查看包含空格的文件名 " " \
# cat my" "file
# cat my\ file1
# cat my file 依次显示my 和 file文件的内容
12、创建隐藏文件,文件名: .news
# touch .news
# ls -l
# ls -a
# ls -la
13、Linux系统的目录结构 (FHS标准)
/ 根目录 (必须存在)
/bin 大量可执行文件 (命令 ls pwd cd ...)
/sbin 系统管理员命令
/boot 启动目录
/root root用户 主目录 (特殊:root用户才具备操作权限)
root的家(皇帝的家)
/home 普通用户的主目录 (寻常百姓家)
/usr 用户应用程序的安装目录
/etc 存放配置文件
比如/etc/passwd 用户账户信息
/etc/shadow 保存账户密码 (加密MD5)
/dev 设备文件
/tmp 临时文件 (程序员使用较多)
/lib 库文件 library
/var 数据、日志、临时文件
/mnt 挂接其它文件系统 mount
目录或文件其它操作:
cp 拷贝文件或目录 (copy)
# cp 1.txt 11.txt 将1.txt备份为11.txt
mv 移动文件或目录 (move)
# mv 11.txt 22.txt 重命名
本质:改变文件的绝对路径名
源文件名:/root/test/d1/11.txt
改后: /root/test/d1/22.txt
练习:在~/test下,新建d1和d2目录
d1目录下新建1.txt 文本内容:hello echo hello > 1.txt
将1.txt文件拷贝到 d2目录中
# cd
# cd test 或 cd ~/test
# mkdir d1
# mkdir d2 或 mkdir d1 d2
# cd d1
# echo hello > 1.txt 会新建1.txt文件 写入hello
# cp 1.txt 11.txt 当前目录下拷贝一个11.txt
# ls -l
# cp 1.txt ../d2/1.txt 拷贝新文件由自己命名
# cp 1.txt ../d2 新文件继续使用原文件名
当前在test下:
# cd ~/test
# cp d1/1.txt d2/2.txt
如果当前在d2下:
# cd ~/test/d2
# cp ../d1/1.txt . 拷贝到当前目录
# cp ../d1/1.txt 3.txt 拷贝成当前路径下的3.txt
# cp ../d1/1.txt ./3.txt
如果使用绝对路径:
# cp /root/test/d1/1.txt /root/test/d2/3.txt
将d1下的1.txt移动到d3中
# mkdir d3
# cd ~/test/d1
# mv 1.txt ../d3
本质:就是改变文件的绝对路径名
/root/test/d1/1.txt --> /root/test/d3/1.txt
将d1下的11.txt 重命名 为22.txt
# cd ~/test/d1
# mv 11.txt 22.txt
本质: /root/test/d1/11.txt --> /root/test/d1/22.txt
14、拷贝命令cp 和 移动/改名命令mv 的区别:
1)1个文件 cp 之后变为 2个文件 (备份)
2)1个文件 mv 之后还是 1个文件 (本质:改变绝对路径名)
15、删除文件或目录
1)rm 文件名 删除文件
rm -f 关闭交互
# rm *.txt * 通配符,匹配所有字符
删除以.txt为结尾所有文件
2)rmdir 删除空目录
3)rm -r 目录名 删除一个非空目录
rm -rf 关闭交互,删除非空目录
作业:
1、使用一个命令将多个文件合并成一个大文件
2、练习:创建目录、创建文件、删除文件/目录、拷贝、移动文件
(文件系统中常用的命令--重点)
复习:
1、什么是Linux/Unix的Shell,请举例,并说明shell之间如何切换。
Shell 命令解释器,主要用来接收并解释命令,介于用户和内核Kernel之间,本身就是一个可执行的文件,运行后就是一个进程。
在系统登录成功后,系统会默认启动登录shell进程 (login shell),Linux常用的是bash.
常用的shell: bash csh sh
Shell间的切换:之间执行shell命令的名称。
本质:在当前shell中,启动子进程
2、请分析以下磁盘的风格和分区情况。
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdb1
/dev/sdb2
思路:Linux/Unix将文件、目录、设备都当作文件来管理
(File System 文件系统)
共有2块SCSI硬盘,第一块硬盘有3个分区;第二块硬盘2个分区
(a b) sd 1 2 3 1 2
3、Linux/Unix常用命令 (Commond)
1)查看命令帮助手册:man 命令名 回车、空格、q
2)查看目录下的资源: ls
ls -l (ll) ls -al ls -F ls -R ls -lt
ls -ld 查看当前目录的属性,无需回上一层再 ls -l
3)清除屏幕:clear
4)查看当前磁盘分区情况:fdisk -l df -k
5)查看小文件:cat 文件名
6)查看日期:date
7)查看日历:cal
8)输出重定向: > 覆盖 >> 追加
9)创建目录: mkdir 目录名
10)创建文件:touch 文件名
11)拷贝文件:cp 原文件 新文件
12)移动文件(重命名):mv 原文件名 新文件名(所在目录)
本质:更改原文件的绝对路径
13)删除文件:rm 文件名
rm -f 关闭交互
14)删除目录:rmdir 目录名 (只能删除空目录)
rm -r 删除非空目录
rm -rf 删除非空目录,关闭交互
作业:
1、使用一个命令,将三个小文件合并成一个大文件
# cd
# cd test
# echo hello > f1
# date > f2
# cal > f3
# cat f1 f2 f3 > f5
2、练习:创建目录、创建文件、拷贝文件、移动文件、删除文件/目录。
# cd ~/test/dir1
# mkdir d1
# mkdir d2
# cd d1
# touch f1
# cal >> f1
# touch f2
# date >> f2
将d1下的f1拷贝到d2目录中:
# pwd /root/test/dir1/d1下
# cp f1 ../d2
# cd ../d2
# ls
将d1下的f2移动到d2下:
# pwd /root/test/dir1/d2下
# mv ../d1/f2 .
# rm -f f1
# rm -f f*
# cd ..
# rmdir d2 空目录
# rm -rf d1 非空目录
注意:如果用root登录,在/目录下,千万不能:
rm * 会删除所有文件和目录
技巧:平时少用root登录,root拥有最高权限,为了防止误操作。
一、用户和组的管理
Linux/Unix是多用户系统
(root是超级用户、管理员,拥有最高权限。其它用户及权限由root来管理)
比较Windows系统:
控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组
右击某用户 -> 属性 -> 隶属于(属于哪个组)
1、添加用户:useradd 用户名 (只能由root操作)
# useradd xiaohong
(不写组,会自动形成一个组,组名就是用户名)
2、创建密码:passwd 用户名
# passwd xiaohong
# who am i 必须为root
# useradd xiaohong 添加用户
# passwd xiaohong 输入密码: 123 123
查看/home 增加一个用户的主目录:xiaohong
3、切换用户(改变身份): su 用户名
# su xiaohong
注意:从root切换到普通用户不需要密码,但从普通用户切换到root或其他用户,需要密码。
练习:从root切换到xiaohong,从xiaohong切换到root
who am i : 查看最初登录身份
whoami : 查看当前的身份
id: 查看当前的详细身份(用户id 用户名 组id 组名)
直接变为root: su 即可
二、案例:
1、添加boys组: groupadd boys
2、添加girls组: groupadd girls
3、查看组信息: cat /etc/group 组管理配置文件
# groupadd boys
# groupadd girls
# cat /etc/group
组名 组id(gid)
root:x:0:root
...
xiaohong:x:500:
boys:x:501:
girls:x:502:
4、添加用户tom到boys组:useradd -g boys tom
# cd 回到主目录
# useradd -g boys tom
# passwd tom 密码: 123
passwd -d 用户名 由root来清口令
5、同理,添加用户alice和rose到girls组:
# useradd -g girls alice
# passwd alice 密码: 123
# useradd -g girls rose
# passwd rose 密码: 123
6、查看用户账户基本信息: /etc/passwd
# cat /etc/passwd
用户名:口令占位符:uid:gid:描述信息:用户主目录:登录shell
root:x:0:0:root:/root:/bin/bash
...
xiaohong:x:500:500::/home/xiaohong:/bin/bash
tom:x:501:501::/home/tom:/bin/bash
alice:x:502:502::/home/alice:/bin/bash
rose:x:503:502::/home/rose:/bin/bash
uid: 用户id
gid: 组id
补充:/etc/shadow 用户口令(密码)文件
root有查看权限,小红等权限不够 cat /etc/shadow
但是:密码经过加密 MD5算法
7、用alice用户身份,在其主目录下创建1.txt文件
# who am i 是root
# su alice 不用密码
# cd 到alice主目录 /home/alice
# touch 1.txt 创建空文件
# ls -l
8、使用vi编辑器,编辑1.txt (vi初步使用)
1)vi 1.txt 处于命令模式
2)敲 i 键,切换到输入模式 (左下角显示 插入 INSERT)
3)输入 I am alice!
4)敲Esc键,由输入模式 -> 命令模式
5)敲 : 键,进入底行模式(冒号模式)
6)在冒号后输入: wq 回车,表示保存并退出 (write 和 quit)
7)注意:如果保存文件出现问题,可以强制不保存退出
冒号模式: q!
9、尝试让tom去查看并修改1.txt文件?
# su tom 密码 123
# ls -l 权限不够
# cd ..
# ls -l
文件类型 权限 属主 属组 目录名/文件名
drwx------ 2 alice girls 4096 9月 25 11:33 alice
drwx------ 2 rose girls 4096 9月 25 10:47 rose
drwx------ 2 tom boys 4096 9月 25 10:43 tom
文件类型: - 普通文件 d 目录
三、文件/目录的权限:
1、user 所有者(属主 owner 文件的创建人 u)
2、group 所有者所在的组 g
比如:useradd -g girls alice alice属于girls组
useradd xiaohong 默认xiaohong组名就是xiaohong
alice和rose同在girls组中
3、other 其他 o 既不是user,也不在同一组中
ls -l 开始的10个字符:
文件类型 文件/目录权限
- 文件 --- --- ---
d 目录 所有者 所在组 其他
4、三种访问权限:可读r、可写w、可执行x
rwx --- --- 出现的位置固定 rwx 缺失使用-代替
r 可读 r-- 100 4
w 可写 -w- 010 2
x 可执行 --x 001 1
- rw- r-- r-- 普通文件: 权限 644 权限的数字表达法 简洁
自己:可读、可写 同组:只读 其他:只读
d rwx r-x r-x 目录: 权限 755
自己:可读、可写、可执行
同组:可读、可执行 其他:可读、可执行
- rwx rwx rwx 可执行文件 777
对所有用户:可读、可写、可执行
权 权限的数字表达法
421
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
5、归纳文件和目录的各种权限规律:
1)文件的权限:r 可读 可以使用vi、cat查看文件内容
w 可写 可以修改后保存
x 可执行 可以直接运行 命令就是可执行文件
2)目录的权限:r 可读 ls 目录,能查看到内容
w 可写 可以修改目录内容,如新建、删除目录
x 可执行 可以cd进去
6、修改文件/目录权限的命令:chmod
角色:u 拥有者 user
g 同组 group
o 其他 other
a 所有的 all
用法:
# chmod u+x 1.txt 针对自己添加可执行权限
# chmod u-x 1.txt 针对自己去除可执行权限
# chmod g+w 1.txt 针对同组增加可写权限
# chmod a+r,g+w 1.txt 所有用户都可读,同组的可写
# chmod 777 1.txt 数字表达法
rwx rwx rwx
# chmod 644 1.txt
前提:只有文件的拥有者、root用户可以改权限
案例:由root或alice修改alice主目录权限:
针对o + rx,其他用户xiaohong可以进入alice主目录,并可以使用ls -l查看目前下的内容.
由root或alice针对1.txt文件修改权限,o+w xiaohong即可修改文件。 644 -> 646
rw- r-- r-- rw- r-- rw-
chmod 646 1.txt
练习:
1)将may、lucy用户加入a组,andi和james加入b组;
2)andi在主目录中新建f1文件,文件中写入一句话,保存退出 vi
3)如何实现让may, james进行查看并修改文件f1.
4)删除用户和组
userdel 用户名
groupdel 组名
由root操作:
# groupadd a
# groupadd b
# cat /etc/group
# useradd -g a may
# passwd may 密码123
# useradd -g a lucy
# passwd lucy 密码123
# useradd -g b andi
# passwd andi 密码123
# useradd -g b james
# passwd james 密码123
# su andi
$ cd 回到andi主目录 因为/root下没有创建文件权限
$ vi f1 编辑I am andi! 保存退出
新建终端模拟其它用户登录 分别may 和 james
andi:
cd /home
chmod a+x andi 所有的都具备可写权限
may:
james:
都可以cd 进入andi
ls -l 权限不够
andi:
chmod a+rx andi 所有用户都有 r 和 x权限
700 -> 755 rwx r-x r-x
此时:may和james都可以查看andi目录下资源
ls -l
andi:
cd andi
chmod a+w f1 让所有用户都可修改f1文件
644 -> 666 rw- rw- rw-
chmod 666 f1
此时:同组的james、其他的may都可以进入andi主目录,并查看目录中资源,打开f1文件,并修改f1文件内容保存。
准备一个可执行文件: 针对f2设置为 x权限,就可直接运行
andi:
$ vi f2
编辑: date
sleep 10
cal
如果多条语句写一行,分号隔开: date; sleep 10; cal
保存退出 f2脚本中命令会依次执行
$ f2 命令找不到
$ ./f2 找到了,但没有可执行权限
$ chmod u+x f2 让自己具备可执行权限
$ chmod a+x f2 任何用户进入当前目录都可执行f2
四、查看文件的方式总结 cat more vi head tail
1、cat 适合看小文件,不可翻页,不可编辑
可以将多个小文件合并成一个大文件:
cat f1 f2 f3 > newfile
2、more 适合看大文件,可以翻页,不可编辑。
空格 翻屏
回车 滚动行
b 向前一屏 back
f 向后一屏 forward
h 求助 help
q 退出 quit
/ 查找文本
n 继续查找
将/etc/passwd文件拷贝到andi的主目录下:
cp /etc/passwd ~
cat passwd
more passwd
3、vi 功能强大文本编辑器(Unix/Linux) vim等都是对vi的加强版
关注三种模式:如何切换
回车 i a o O
底行模式 ----> 命令模式 ----> 输入模式
<---- (初始模式) <----
: / ? Esc
常用的操作命令:
O
i 光标 a
o 变为输入模式,光标停留位置不同
向上 k
向下 j
向左 h
向右 l 用小键盘方向键也可
到行首 ^
到行尾 $
到第5行 5G
屏首 H
屏尾 L
屏中央 M
前翻页 ctrl + b backward
后翻页 ctrl + f forward
x 删除一个字符
dw 删除当前词
3dw 删除3个单词
dd 删除当前行
5dd 删除5行 (当前行开始)
:5, 10d 冒号模式,删除5~10行
r 替换一个字符
cw 替换一个单词
cc 替换一行
C 替换从光标到行尾
yw 拷贝词
yy 拷贝行 (Y) 5yy 拷贝5行
p 粘贴
:1,2co3 拷贝行1,行2到行3之后
:4,5m6 移动行4,行5到行6之后 剪切
:w 存盘 write (类似Windows中 ctrl + s)
:w 新文件名 另存为新文件
:wq 存盘退出 或 ZZ (shift + z + z) 或:x
:q! 强制退出不存盘
其它命令:
~ 大小写转换
J 把当前行和下一行连起来
u 撤销上一步 undo
:set number 显示行号 :set nu
:set nonumber 取消行号 :set nonu
:21 光标跳到指定行
21G 到21行 G表示文件为 1G第一行
/字符串 从当前行往下查找
?字符串 从当前行往上查找
n 继续向下查找
N 反方向继续查找
:r file2 在光标所在位置插入另一个文件 (合并)
:1,$s/旧串/新串/g 替换全文
说明:s表示替换 g表示全部替换 global
将所有: 换成@
:1,$s/:/@/g
练习:使用vi编辑一段Java程序 vi LaoGong.java
写一个类 LaoGong 单例模式(饿汉式)
package day01;
public class LaoGong{
private static LaoGong lg = new LaoGong();
private LaoGong(){}
public static LaoGong getInstance(){
return lg;
}
}
4、head和 tail
head -n 文件名 前n行
tail -n 文件名 后n行
tail -f f5 能够监控日志文件 动态实时刷新
五、常用技巧
1、过滤:grep 过滤出n行
2、统计:wc 统计:行、单词、字符 的字数
3、管道:| (piping)
管道符用于连接两个命令:前一个命令的输出,作为后一个命令的输入。
比如:将/etc/passwd的头10行,写入文件f6
# head -10 /etc/passwd > f6
将/etc/passwd的头10行排序后,写入文件f8 sort命令
# head -10 /etc/passwd | sort > f8
常见用法:
1)管道more: 分屏显示 ls -l /etc
ls -l /etc | more
2)管道grep: 过滤 ls -l /etc
ls -l /etc | grep ssh
cat /etc/passwd | grep james
james:x:507:504::/home/james:/bin/bash
六、进程管理
1、查看当前所有进程
ps -ef 以全格式显示当前系统所有的进程
-e 所有进程
-f 全格式
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:05 ? 00:00:03 init
Uid 用户id
Pid 进程id
PPid 父进程id
C cpu占有率
Stime 开始时间
TTY 开始此进程的终端号
Time 此进程运行的总时间
CMD 该进程对应的命令名
启动sleep进程:sleep 1000
2、kill命令:根据进程id杀死进程
kill 进程号
某些情况下,kill会出现信号丢失:
kill -9 进程号 强制杀死进程(绝杀)
3、pkill命令:根据进程命令名杀死进程
pkill sleep
关机:halt halt: must be superuser.
重启:reboot rebot: must be superuser.
必须是超级用户root才可操作!