一.不进入系统修改root密码:
1. 读秒的时候按e进入grub编辑
2. 在grub界面按e进入编辑模式
3. 编辑kernel那行,输入 空格 1 ,回车
4. 按b键重启
5. 进入单用户模式修改密码,执行命令:passwd 修改密码
6. reboot重新启动
二.文件和目录的操作—文件和目录的创建,复制,移动,重命名
1. 创建目录 mkdir
mkdir + 目录名(如果不指定路径,就代表在当前目录下创建)
mkdir aaa 在当前路径下创建aaa
mkdir -p 递归创建,可以创建多级目录,当父目录不存在时,先帮我们创建父目录
mkdir -p ./1/2/3/4 在当前目录下创多级目录
mkdir -p ./aa/bb/cc/dd /home/aaa/bbb
2. 创建文件 touch
touch 创建空文件
touch + 文件名(如果不指定路径,就代表在当前目录下创建,可以同时创建多个,多个文件之间用空格隔开)
符号命令
echo
echo hello 直接将输入的字符创打印到屏幕
echo hello > 1.txt 将字符串写到文件中
echo qianfeng >> 1.txt >> 追加写操作,将要输入的内容追加到文件末尾,若文件不存在,会自动创建
echo xisanqi > 1.txt > 先清空文件内容,然后在写入文件,若文件不存在,会自动创建
ls -l > 1.txt (将内容重定向到1.txt中)
echo 密码 | passwd --stdin root 不通过文件交互信息,直接修改密码
输入重定向(相当于导入) <
cat > 2.txt < /etc/passwd
输入结束 <<
cat > 3.txt << 代表输入结束,EOF(EOF可以自定义,区分大小写,与Ctrl + D相同,代表结束输入)
cat > 3.txt << EOF
(写shell脚本时常用)
echo <property>...</property>
3. 文件或目录的拷贝 cp
cp + 文件名 + 目标位置 只拷贝文件(可以同时拷贝多个文件)
cp -r + 源目录 + 目标位置
cp -r home/ccc/ .ddd 拷贝home目录下的ccc到当前目录并改名字为ddd
4. 移动文件 mv (相当于剪切)---可以用来重命名
mv + 文件或目录名 + 目标位置
mv + 文件名或目录名文件 + 新的路径/文件名
5. 删除文件或目录 rm
rm -rf 强制递归删除
-r recursive 递归
-f 强制
6. 文件的改名 rename(批量改名)
rename + 要修改的字符串 + 修改后的字符串 + 匹配的文件
rename .repo .repo.bak ./*repo 修改当前路径下以.repo结尾的文件为.repo.bak
rename .txt "" ./*.txt 去掉当前路径下.txt文件的后缀
三.文件的编辑
vi 和 vim
vi + 文件名(包含路径,如果不指定就是当前路径下,如果文件不存在,创建空文件)
1. 一般模式:
dd 删除光标所在行整行内容
ndd 从光标所在行开始,删除n行
dG 从光标所在行开始删除到文件末尾
x 删除光标所在处字符
nx 从光标所在处字符开始,删除n个字符
D 从光标所在处删除到行尾
r 替换一个字符
R 从光标所在处替换,根本停不下来,按esc结束
u 取消上一步操作
Ctrl + r 返回到取消前
yy 复制一行
nyy 从光标所在行开始,复制n行
p 粘贴
ZZ 保存并退出(大写Z)
gg 定位到首行
G 定位到尾行
ngg 定位到n行
2. 编辑模式---按esc退出编辑模式
i 光标所在处前开始输入
I 光标所在行行首开始输入
a 光标所在处后开始输入
A 光标所在行行尾开始输入
o 光标所在行下一行开始输入
O 光标所在行上一行开始输入
3. 底行模式(在一般模式下按shift + : 进入底行模式)
w 保存
q 退出
wq 保存退出
q! 强制退出(不保存)
wq! 强制保存退出
查找
/字符串 查找文件中的字符串,并定位到第一个找到的位置,
继续往下查找使用n,按N定位到上一个匹配的位置
替换
:s/老字符串/新字符串 查找光标所在行的第一个老字符串,并替换成新字符串
:s/老字符串/新字符串/g 查找并替换光标所在行的所有的老字符串
:%s/老字符串/新字符串/g 替换文件中所有的老字符串
:3,$s/老字符串/新字符串/g 替换第三行到末尾的所有字符串
:set nu 设置行号
:set nonu 取消行号设置
:n 定位到n行
4. 选择模式
按 v 进入选择模式
shift + v 行选择模式
Ctrl + v 块选择模式
y 复制
p 粘贴
四.文件的查看
1. cat
cat 一次性将所有的内容加载到内存,输出到控制台
cat -n 输出行号
2. head
head 文件名
head 默认取前10行
head -n 取出前n行
3. tail
tail 文件名
tail 默认取后十行(HDNF的shell从文件末尾取1kb的数据)
tail -n 取出后n行
tail -n +10 取第10行到文件末尾的内容
tail -f 监控的是文件的inode,跟踪文件的唯一标示,inode号,就算文件已经改名移动等还是跟踪这个inode号,但是一旦文件移动或者重新创建或者重命名,都不能监控
tail -F 监控的是文件名,只要文件时这个名字,不论文件是否存在都会一直监控
flume : 日志采集工具
日志策略 :
tail -f : 在某一个时间点阻断流的写入,将文件复制一份,然后使用flume将数据移动走,
清空原来的日志文件内容
tail -F : 在某一个时间点阻断流的写入,将文件直接移动走,然后创建一个新的文件与原来文件名字一致
每个文件创建的时候都由系统维护一个iNode号
ll -i ./ inode号的查看
磁盘上文件存储的最小单位是扇区,大小为512个字节
操作系统读取磁盘的最小单位是块,一个块8个扇区,大概4k
系统当中存储文件的数据分为两种--元数据,数据块
元数据 :保存时间,用户,权限,块信息等
stat File 查看元数据
数据块 : 要使用的数据
磁盘存储在系统格式化的时候分为两部分,分别存储元数据和数据块,读取一个文件要读取那些块,
就是根据元数据知道的
inode也会消耗磁盘空间.所以磁盘格式化的时候,操作系统自动将磁盘分为两个区,一个是数据区,
存放文件数据,另一部分就是inode区(inode table)存放inode包含的信息.每个inode的大小
一般是128字节或者256字节,inode节点的总数,在格式化的时候就给定,一般是每1kb或者每2kb
就设置一个inode.
Q:假定现在1GB的磁盘,每个inode节点的大小为128字节,每1kb设置一个inode,那么inode区的大小为多大?
A:128M,占整个磁盘的12.8%
会出现的问题:磁盘空间未占满,但是不能创建新文件,inode区已满
HDFS分布式文件系统,元数据放在内存中,每条150字节左右,如果存储小文件,内存迅速被占满,
寻址的时间甚至超过文件读取的时间
4. more 分页查看文件,适合内容较多的文件
more 文件名
按空格翻页查看
按回车逐行查看
按b会看
按q退出浏览状态
5. less 分页查看文件,适合内容较多的文件,支持上下翻滚
less 文件名
按空格翻页查看
按回车逐行查看
按b会看
按q退出浏览状态
**less 支持搜索 /字符串
五.文件的查找
which : 查找命令
用于查找并显示给定的命令的绝对路径,在环境变量中查找的
whereis : 一般用于查找软件的安装位置,该指定会在特定目录中查找符合条件的文件
locate查找 : 查找文件所在位置,使用的是数据库,效率很高,弊端是数据库不是实时更新的,
新创建的文件可能找不到,更新数据库:updatedb
echo hello >> test.txt
updatedb
locate test.txt
find查找 : 查找速度很慢,,参数前的路径可以有多个,表示从多个路径下查找
find + 路径 + 参数
find /home /root/Desktop -name "*.txt" 从两个路径下查找以.txt结尾的文件
-exec find命令对匹配的文件执行该参数所给出的shell命令,相应的命令形式为
COMMAND {} \;注意:{} 和 \ 之间的空格
-ok 和 -exec 的作用相同,只不过以一种更安全的方式,在执行每一条命令时会询问用户
find /home /root/Desktop -name "*.txt" -ok rm {} \
find /home /root/Desktop -name "*.txt" -exec rm {} \
六.文件的压缩
gzip : 用来压缩文件,以.gz为文件扩展名,可以压缩较大的文件,节约磁盘空间,可以与tar命令组合使用
1. 压缩时,不保留源文件
2. 不能压缩目录
3. 可以同时压缩多个文件
4. 可以同时解压多个文件
5. 解压缩命令:gunzip
bzip2 : 用来压缩文件,以.bz2为文件扩展名,可以压缩较大的文件,节约磁盘空间,可以与tar命令组合使用
1. 压缩时,不保留源文件
2. 不能压缩目录
3. 可以同时压缩多个文件
4. 可以同时解压多个文件
5. 解压缩命令:bunzip
tar : 打包,可以将多个文件或目录放在一起形成一个文件,以.tar为扩展名
-c : 打包
-v : 显示过程
-f : 指定文件
-x : 解包
-C : 重定向
-z : 以gzip的形式压缩或解压
-j : 以bzip2的形式压缩或解压
tar -xvf test.tar -C ./data
tar -cvf test.tar 1.txt 2.txt aaa
tar -zcvf test.tar.gz 1.txt 2.txt aaa //先打包在压缩
tar -zxvf test.tar.gz -C data
tar -jcvf test.tar.bz2 1.txt 2.txt aaa
tar -jxvf test.tar.bz2 -C data
七.用户和组的操作
普通用户 id 500--
系统用户 id 1-499
root用户 id 0
添加用户
用户必须有所属组,创建用户时,如果不指定组,系统会默认与用户同名的组,用户id与组id,由系统分配
useradd user
useradd -g 500 user1 添加用户并指定基本组
useradd user2
查看信息
查看用户信息 cat /etc/passwd
查看组的信息 cat /etc/group
查看密码信息 cat /etc/shadow
查看组的密码信息 cat /etc/gshadow
修改密码
修改用户的密码 : passwd + 用户名
修改组的密码 : gpasswd + 组名
删除用户
userdel + 用户名
-r 删除用户名删除用户的家目录
-f 删除用户,即使该用户已登录
修改用户
usermod + 用户名
-g 基本组
-G 附加组
-u 用户id
useradd -g 500 -G 503 user250 : 添加用户user250 基本组为500,附加组为503
usermod -g 503 -G 500 -u 666 user250 : 修改用户user250 基本组为503 附加组为500 用户id为666
添加组
groupadd + 组名
groupadd manager
groupadd -g 999 manager1 添加组manager1 并指定组id为999
删除组
groupdel + 组的名称
注意: 删除组的时候,组内必须没有用户存在,否则删除不了
修改组
groupmod + 组的名称
-g 修改基本组id
-n 修改组名字
id 显示用户的有效id
id -g user250
八.文件的权限
-|rw-|---|---. 1 root root 1771 4月28 2015 anaconda-ks.cfg
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
①: 文件类型
- 文件
d 目录
l 链接
②:所有者权限(u)
r 读 4
w 写 2
x 执行 1
③:所属组权限(g)
r 读 4
w 写 2
x 执行 1
④:其他用户权限(o)
r 读 4
w 写 2
x 执行 1
⑤:所有者
⑥:所属组
⑦:文件大小
⑧:最后修改时间
⑨:文件名
修改文件的权限
chmod 755 1.txt(文件)
chmod ugo+w 1.txt
chmod ugo-w 1.txt
chmod -R ugo+x data(文件夹)
chmod -R 777 data
修改文件所属用户和所属组
chown hadoop:hadoop 1.txt
chown -R hadoop:root ./data