01 linux基础命令

主要搜集我已经忘记了,或者不知道的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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值