主要搜集我已经忘记了,或者不知道的linux常用知识和操作,每天看一次基础不忘记。
文章目录
一、linux基础目录
bin linux系统命令
boot 系统启动
dev linux的系统外部设备
etc 系统配置文件及子目录
home 系统用户目录
lib 系统动态库
lost+found 非法关机后存放相关文件
media 系统自动识别的设备,如的U盘等
misc 系统用途不明的文件存放
mnt linux系统让挂载的其他文件系统,如光驱
net 网络
sbin 超级用户系统命令
selinux centos/redhat 特有目录,安全机制,类似防火墙
srv : service启动后读取的数据
usr : 应用程序和文件存放的目录,类似windows的program files
var : 存放不断扩充的东西,如日志文件
二、vi指令
1. yy (功能描述:复制光标当前一行)
y数字y (功能描述:复制一段(从第几行到第几行))
1. p (功能描述:箭头移动到目的行粘贴)
1. u (功能描述:撤销上一步)
1. d (功能描述:删除光标当前行)
d数字d (功能描述:删除光标(含)后多少行)
1. x (功能描述:删除一个字母,相当于del)
X (功能描述:删除一个字母,相当于Backspace)
1. yw (功能描述:复制一个词)
1. dw (功能描述:删除一个词)
1. shift+^ (功能描述:移动到行头)
1. shift+$ (功能描述:移动到行尾)
1. 1+shift+g (功能描述:移动到页头,数字)
1. shift+g (功能描述:移动到页尾)
1. 数字N+shift+g (功能描述:移动到目标行)
三、常用命令
1)ctrl + c:停止进程
2)ctrl + l:清屏
3)ctrl + q:退出
3.1 ls命令
ls常用选项
-a 显示指定目录下所有子目录与文件, 包含隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小
ls和通配符的使用
通配符 | 含义 |
---|---|
* | 代表 任意个数 的字符 |
? | 代表任意一个字符, 且只能是一个 |
[abc] | 匹配a、b、c中任意一个 |
[a-f] | 匹配从a到f范围内的任意一个字符 |
1 查看以 1 开头的文件或目录
ls 1*
2 查看以 3.txt 结尾的 文件或目录
ls *3.txt
3 查看含有3的文件列表
ls *3*
4 查看第二个字符是2的文件
ls ?2*
5 查看 第一个字符是 1到5, 以23.txt结尾 的 目录或文件名
ls [1-5]*23.txt
3.2 文件目录类
3.2.1 目录文件MML
1)cd - 回到上一次所在目录
2)mkdir -p ./dir1/dir2 创建多个目录及其子目录
3)rm -rf 递归强制删除目录
4)cp -r 递归复制这个文件夹
-r recursive (递归) 递归复制目标目录的内容
5)mv 重命名 及 移动
6) tree [目录名] 以树状图 列出目录中的内容
-d derictory (目录) 只显示目录, 不显示文件
-L level (层级) 显示几层目录
例如:tree -L n [目录]
默认没有安装 tree 组件, 需要联网时安装:
# 安装 tree组件
yum -y install tree
# 卸载 tree组件
yum -y remove tree
3.3.2 查看文件内容
cat 文件名 concatenate 查看小文件内容
less -N 文件名 less 分频 显示大文件内容
head -n 文件名 查看文件的前一部分
tail -n 文件名 查看文件的最后部分
grep 搜索文本 文件名 grep 根据关键词, 搜索文本文件内容
1)cat 显示全部内容
-A 显示符号
-n 显示行号,包括空行
-b number-nonblank 非空行 显示行号
2)tac 与 cat 相同参数,内容倒置显示
3)more 一页一页显示文件内容
-N number 显示文件内容 且 显示行号
空格 向下翻一页
enter 向下翻一行
ctrl+F 向下滚动一屏
ctrl+B 返回上一屏
q 退出more查看
/word 搜索word字符串
n 向下找
N 向上找
== 输出当前行号
:f 输出文件名和当前行号
4)less查看文件内容
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/子串 向下搜索 n向下 N向上
?子串 向上搜索 N向下 n向下
q离开less 程序
5)head 查看头几行
-n number 表示显示前几行内容
head -n 10 查看头10行
6)tail查看尾几行
tail -n 10 查看文档的最后10行内容
tail -f 动态显示文档的最后内容,一般用来查看日志
tail -100f 文件名 动态显示文档的最后100行内容
7) grep 关键字 文件名
-n number 显示匹配行和行号
-i ignore-case 忽略大小写
-v invert-match 显示 不包含关键字 的所有行
grep -n 关键字 文件名 搜索 存在关键字 的行 且 显示行号
grep -i 关键字 文件名 忽略大小写 搜索 存在关键字 的行
grep -v 关键字 文件名 搜索 不存在关键字 的行
grep 正则 文件名 搜索 以关键字开始 的行 或 以关键字结尾 的行
^a 行首,搜索以a开头的行
ke$ 行尾,搜索以ke结束的行
**重定向**
```text
ls -a > ls.info 覆盖写
ls -a >> ls.info 追加写
3.2 其他
3.2.1 管道
实质:将命令1的结果通过管道交给命令2,再做进一步的处理
过滤 /etc/ 目录下 以 pro 开头的文件
ls /etc/ | grep ^pro
搜索存在关键字的行数
ls /etc | grep ^pro | wc -l
命令: wc [参数] [文件] 打印文件的行数, 单词数, 字节数
参数: -l line 行 显示 行数
将命令的成功结果 覆盖 指定文件内容
3.2.2 重定向 > 和 >>
- 通过 命令 > 文件 将命令的成功结果 覆盖 指定文件内容
- 通过 命令 >> 文件 将命令的成功结果 追加 指定文件的后面
- 通过 命令 &>> 文件 将 命令的失败结果 追加 指定文件的后面
将命令的成功结果 覆盖 指定文件内容
echo 2222 > 01.txt
将命令的成功结果 追加 指定文件的后面
echo 3333333 >> 01.txt
将 命令的失败结果 追加 指定文件的后面
cat 不存在的目录 &>> error.log
3.2.3 && 和 ||
&& 命令1执行成功,才会执行命令2
|| 如果命令1执行失败,才会执行命令2
如果 创建 目录 成功, 就提示 创建成功
mkdir -p 正确目录 && echo “提示创建目录成功”
如果 创建 目录 失败, 就提示 创建失败
mkdir 错误目录 || echo “提示创建目录失败”
3.2.4 软连接
因为 某些文件和目录 的 路径很深, 所以 需要增加 软链接(快捷方式)
ln -s 目标文件绝对路径 快捷方式路径
link 给目标文件增加一个软链接, 通俗讲就是快捷方式
- 通过 ln -s 源文件的绝对路径 快捷方式路径 给 目标文件 增加 快捷方式
- 注意: 必须 增加 -s , 否则 就变成了 硬链接(了解), 原理如下
3.3 日期
date显示当前时间
date "+%Y-%m-%d %H:%M:%S" 显示为2019-08-3 16:44:30
date -d 显示非当前时间
(1)date -d '1 days ago' (功能描述:显示前一天日期)
(2)date -d yesterday +%Y%m%d (同上)
(3)date -d next-day +%Y%m%d (功能描述:显示明天日期)
(4)date -d 'next monday' (功能描述:显示下周一时间)
date -s 设置系统时间
date -s "2017-06-19 20:52:18"
cal 当前日历
cal -3 显示3月的日历
cal 2017 显示2017年的日历
3.4 查找命令
3.4.1 grep命令
grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
格式: grep [option] pattern [file]
可使用 —help 查看更多参数。
使用实例:
# 查找指定 ssh 服务进程
ps -ef | grep sshd
# 查找指定服务进程,排除 gerp 本身
ps -ef | grep sshd | grep -v grep
# 查找指定进程个数
ps -ef | grep sshd –c
从文件中读取关键词进行搜索
# 输出 a.txt 文件中含有从 b.txt 文件中读取出的关键词的内容行
cat a.txt | grep -f b.txt
# 从文件中读取关键词进行搜索,显示行号
cat a.txt | grep –nf b.txt
# 从文件中查找关键词,并显示行号
grep -n 'hello' a.txt
# 找出以 u 开头的行内容
cat test.txt |grep ^u
# 输出非 u 开头的行内容
cat test.txt |grep ^[^u]
# 输出以 hat 结尾的行内容
cat test.txt |grep hat$
# 显示包含 ed 或者 at 字符的内容行
cat test.txt |grep -E "ed|at"
3.4.2 find命令
find 命令在目录结构中搜索文件,并对搜索结果执行指定的操作。
find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
实际参数很多,可使用 —help 查看。
使用实例:
# 在当前目录查找以.log 结尾的文件, 并显示详细信息。
find . -name "*.log" -ls
# 查找/root/目录下权限为 777 的文件
find /root/ -perm 777
# 查找当目录,以.log 结尾的普通文件
find . -type f -name "*.log"
# 查找当前所有目录并排序
find . -type d | sort
# 查找当前目录大于 100M 的文件
find . -size +100M
3.4.3 Locate命令
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库。之后当寻找时就只需查询这个数据库( /var/lib/locatedb)。
Linux 系统自动创建这个数据库, 默认每天自动更新一次,所以使用 locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。
如果是精简版 CentOS 系统需要安装 locate 命令
yum -y install mlocate
# 命令来创建 locate 命令依赖的数据库
updatedb
使用实例:
# 搜索 etc 目录下所有以 sh 开头的文件
locate /etc/sh
# 查找和 pwd 相关的所有文件
locate pwd
3.4.4 whereis命令
whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
whereis 和下 locate 一样,会从数据库中查找数据,而不是像 find 命令那样,通过遍历硬盘来查找。
使用实例:
# 将和 ls 文件相关的文件都查找出来
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
# 查找 ls 命令说明文档路径
whereis -m ls
# 查找 ls 源文件
whereis -s ls
3.4.5 which命令
which 命令的作用是在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
使用实例:
# 查找 pwd 命令所在路径
which pwd
/bin/pwd
# 查找 path 中 java 的路径
which java
/root/apps/jdk1.8.0_65/bin/java
which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档, 所以,不同的 PATH 配置内容所找到的命令会不一样
3.5 用户与用户组
3.5.1 用户
添加普通用户
# 这个就表示我们创建了一个普通用户
useradd hadoop
# 表示我们需要给hadoop这个普通用户分配一个密码,密码需要自己设置
passwd hadoop
基本操作
# 判断用户是否存在
id 用户名
# 删除用户
userdel 用户名
# 用户和主目录都删除
userdel -r 用户名
#将用户加入dev组
usermod -g dev zhangyj
查看用户情况
# 显示有哪些用户登录系统
who
# 显示登录用户的用户名
who am i
# 显示自身用户名称
whoami
3.5.2 su与sudo
su 用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是 root向普通或虚拟用户切换不需要密码, 反之普通用户切换到其它任何用户都需要密码验证。
su 在不加任何参数,默认为切换到 root 用户,但没有转到 root 用户根目录下; su 加参数 - ,表示默认切换到 root 用户,并转到 root 用户根目录下。
3.5.2.1 sudo使用
sudo 是为所有想使用 root 权限的普通用户设计的。可以让普通用户具有临时使用 root 权限的权利。只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers 文件中有配置项、才具有使用 sudo 的权利。
没有配置权限之前,普通用户无法进行 root 权限操作
使用 root 用户编辑/etc/sudoers 文件,给普通用户授权命令行输入 visudo,打开/etc/sudoers 文件,加入如下的内容,保存。
# 修改/etc/sudoers文件 最后一行加入
root ALL=(ALL) ALL
zhangyj ALL=(ALL) ALL
这样普通用户就可以使用 sudo 执行 root 权限的命令了。
sudo 的工作过程如下:
1.当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是 否有执行 sudo 的权限
2. 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认
3. 若密码输入成功,则开始执行 sudo 后续的命令
如果想要更加精准的控制,就需要理解配置中的含义。
hadoop ALL=(ALL) ALL
第一个 ALL 是指网络中的主机, 我们可以指定主机名, 这样 hadoop 只可以在此主机上执行后面的命令。第二个括号里的 ALL 是指目标用户,也就是以谁的身份去执行命令。最后一个 ALL 是指命令名了。
例如,我们想让 hadoop 用户在 node-23 主机上以 allen 的身份执行 kill 命令, 就这样编写配置文件:hadoop node-23=(allen) /bin/kill
案例:只允许 hadoop 用户以 root 身份在 node-23 上执行 ls 、 cat 命令,并且执行时候免输入密码。
配置文件中:hadoop node-23=NOPASSWD: /bin/ls, /bin/cat
3.5.3 用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,
如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
# groupadd 添加组
groupadd 组名
# groupmod 修改组
groupmod -n 新组名 旧组名
# 查看创建了哪些组
cat /etc/group
#将用户加入dev组
usermod -g dev zhangyj
3.6 文件权限类
3.6.1 文件属性
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组。
有关权限代号的部分,列表于下:
- r:读取权限,数字代号为"4"。
- w:写入权限,数字代号为"2"。
- x:执行或切换权限,数字代号为"1"。
- -:不具任何权限,数字代号为"0"。
(1)作用到文件:
[r]代表可读(read): 可以读取,查看
[w]代表可写(write): 可以修改,但是不代表可以删除该文件,【删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件】.
[x]代表可执行(execute):可以被系统执行
(2)作用到目录:
[r]代表可读(read): 可以读取,ls查看目录内容
[w]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[x]代表可执行(execute):可以进入该目录
3.6.2 改变文件权限
chown -R hadoop:hadoop abc.txt
改变某个文件或者文件夹的所属的用户以及用户组
第一个参数 -R 表示我们递归的进行改变
第二个参数 hadoop:hadoop 表示我们的用户以及用户组
第三个参数:我们需要改变的文件或者文件夹
chmod 改变文件的执行权限
删除一个文件的前提条件:该文件所在的目录有写权限,你才能删除该文件。
mkdir xxx
ll | grep xxx
chmod -R 777 xxx
chmod u-rwx xxx #取消xxx目录,用户“读写执行”权限
chmod g-rwx xxx #取消xxx目录,组“读写执行”权限
chmod 777 xxx #给xxx目录添加所有权限
3.6.3 改变所有者
chown [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)
chown lisi aa.txt
3.6.4 改变所属组
chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组)
chgrp dev aa.txt
3.7 系统服务
1、service后台服务
1)service network status 查看指定服务的状态
2)service network stop 停止指定服务
3)service network start 启动指定服务
4)service network restart 重启指定服务
5)service --status-all 查看系统中所有的后台服务
2、chkconfig设置后台服务的自启配置
1)chkconfig 查看所有服务器自启配置
2)chkconfig iptables off 关掉指定服务的自动启动
3)chkconfig iptables on 开启指定服务的自动启动
# 查看防火墙状态
service iptables status
# 关闭防火墙
service iptables stop
# 查看系统所有的后台服务进程
service --status-all
# 查看指定的后台服务进程的状态
service sshd status
service sshd stop
service sshd start
service sshd restart
# 配置后台服务进程的开机自启或关闭
chkconfig iptables on # 配置防火墙开机开启
chkconfig iptables off # 配置防火墙开机关闭
3.8 磁盘分区
# 1、查看磁盘分区详情
fdisk –l (root用户使用)
# 2、系统磁盘整体使用情况
df [参数]
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式
# 3、挂载卸载
mount [-o options] device dir 挂载光盘
-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
device 要挂载的设备
dir 设备挂载的目录(挂载点)
umount 设备文件名/挂载点 卸载光盘
# 开机自动挂载
vi /etc/fstab
....
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
3.9 进程类
1、查看系统所有进程
ps -aux 查看系统中所有进程
2、实时刷新显示系统进程状态
top [参数]
(1)参数
-d 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
-i:使top不显示任何闲置或者僵死进程。
-p:通过指定监控进程ID来仅仅监控某个进程的状态。
-s : 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
(2)操作选项:
P: 以CPU使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以PID排序
q: 退出top
3、查看进程树
pstree [选项]
选项
-p: 显示进程的PID
-u: 显示进程的所属用户
4、杀死进程
kill -9 pid
5、显示网络统计信息
netstat –anp 显示整个系统目前的网络情况
# 查看7899端口网络使用情况
nestate -anp | grep 7899
3.10 压缩与解压
1、gzip/gunzip 压缩/解压 .gz
gzip 文件
gzip 文件.zip
2、zip/unzip 压缩/解压 .zip
zip 参数 XXX.zip 内容
-r 压缩目录
zip aa.zip 1.txt 2.txt 将1、2文件压缩为aa.zip
unzip aa.zip
3、tar .tar.gz
tar -zcvf XXX.tar.gz [文件列表、目录] 压缩
tar -zxvf XXX.tar.gz 解压
四、crond系统定时任务
crontab 是 Unix 和 Linux 用于设置周期性被执行的指令。 通过 crontab 命令,可以在固定间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
1、crontab 安装:
yum install crontabs
2、服务操作说明:
# 启动服务
service crond start
#关闭服务
service crond stop
# 重启服务
service crond restart
# 重新载入配置
service crond reload
# 查看 crontab 服务状态:
service crond status
# 查看 crontab 服务是否已设置为开机启动
chkconfig crond --list
# 加入开机自动启动
chkconfig crond on
4.1 通过crontab定时任务
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:
-u user:用来设定某个用户的 crontab 服务
file: file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件并载入 crontab。
-e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l:显示某个用户的 crontab 文件内容。 如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r:删除定时任务配置,从/var/spool/cron 目录中删除某个用户的 crontab文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i:在删除用户的 crontab 文件时给确认提示。
命令示例:
# 用指定的文件替代目前的 crontab。
crontab file [-u user]
# 列出用户目前的 crontab.
crontab -l [-u user]
# 编辑用户目前的 crontab.
crontab -e [-u user]
4.2 配置说明
* * * * * command
分 时 日 月 周 命令
第 1 列表示分钟 1~59 每分钟用*或者 */1 表示
第 2 列表示小时 0~23( 0 表示 0 点)
第 3 列表示日期 1~31
第 4 列表示月份 1~12
第 5 列标识号星期 0~6( 0 表示星期天)
第 6 列要运行的命令
配置实例:
# 每分钟执行一次 date 命令
*/1 * * * * date >> /root/date.txt
# 每晚的 21:30 重启 apache。
30 21 * * * /usr/local/etc/rc.d/httpd restart
# 每月 1、 10、 22 日的 4 : 45 重启 apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart
# 每周六、周日的 1 : 10 重启 apache。
10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart
# 每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache。
0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart
# 晚上 11 点到早上 7 点之间,每隔一小时重启 apache
* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
五、yum
YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum install -y httpd (功能描述:安装httpd并确认安装)
yum list (功能描述:列出所有可用的package和package组)
yum clean all (功能描述:清除所有缓冲数据)
yum deplist httpd (功能描述:列出一个包所有依赖的包)
yum remove httpd (功能描述:删除httpd)