打怪升级之小白的大数据之旅(三十九)<Linux常用命令>

打怪升级之小白的大数据之旅(三十九)

Linux常用命令

上次回顾

上一章对Linux基础知识以及一些配置进行了分享,本章节我会对一些常用的命令进行分享,我将常用的命令进行了优先级的分类,大家按照这个优先级练习就好。优先级最高的都是我们经常用到的

Linux优先级

VIM我上一章介绍过了哈,这里就不重复了,有需要的小伙伴请看上一章

第一优先级

  • vi/vim
  • 服务管理类
  • 文件目录类
  • 文件权限类
  • 搜索查找类
  • 进程线程类
  • 软件包管理类
  • crond系统定时任务

第二优先级

  • 用户管理命令
  • 用户组管理命令
  • 压缩解压类

需要了解的命令

  • 常用的快捷键
  • 帮助命令
  • 时间日期类

第一优先级

服务管理类

临时后台服务管理

命令 功能描述
systemctl start 服务名 功能描述:开启服务
systemctl stop 服务名 功能描述:关闭服务
systemctl restart 服务名 功能描述:重新启动服务
systemctl status 服务名 功能描述:查看服务状态
systemctl --type service 功能描述:查看正在运行的服务

示例:

# 查看网络服务的状态
systemctl status network
# 停止网络服务
systemctl stop network
# 启动网络服务
start network
# 重启网络服务
restart network

后台服务自启设置

命令 功能描述
systemctl list-unit-files 功能描述:查看所有服务器自启配置
systemctl disable 服务名 功能描述:关掉指定服务的自动启动
systemctl enable 服务名 功能描述:开启指定服务的自动启动
systemctl is-enabled 服务名 功能描述:查看服务开机启动状态

示例:

# 关闭防火墙的自动启动
systemctl disable firewalld
# 开启防火墙的自动启动
systemctl enable firewalld
# 查看防火墙状态
systemctl is-enabled firewalld

文件目录类

命令 功能描述
pwd 显示当前工作目录的绝对路径
ls 列出目录的内容
cd 切换目录
mkdir 创建一个新目录
rmdir 删除一个空目录
touch 创建空文件
cp 复制文件或目录
rm 移除文件或目录
mv 移动文件与目录或重命名
cat 查看文件内容
more 文件内容分屏查看
less 分屏显示文件内容
echo 控制台输出内容
head 显示文件头部内容
tail 输出文件尾部内容
> 覆盖文件中的内容
>> 向文件中追加内容
ln 默认是硬链接,软连接需要家参数 -s
history 查看已经执行过的历史命令

示例:

pwd命令:
# 显示当前工作目录的绝对路径
pwd
# 输出:/root

ls 命令:
# 查看当前目录的所有内容信息 ls 
ls -al
# 输出: drwxr-xr-x. 3 root    root    4096 5月  27 14:03 ..

cd命令:
# 使用绝对路径切换到root目录 cd
 cd /root/
# 使用相对路径切换到“公共的”目录 cd
cd 公共的/
# 表示回到自己的家目录,亦即是 /root 这个目录 cd ~
cd ~
# 回到上一次所在目录cd-
 cd -
# 到当前目录的上一级目录
cd ..

mikir命令:
# 创建一个目录
mkdir xiyou
# 创建一个多级目录
mkdir -p xiyou/mingjie
rmdir命令:
# 删除一个空的文件夹
rmdir xiyou/mingjie

touch命令:
# 创建一个sunwukong的txt文件
touch xiyou/dssz/sunwukong.txt

cp命令:
# 复制文件
cp xiyou/dssz/suwukong.txt xiyou/mingjie/
# 递归复制整个文件夹
cp -r xiyou/dssz/ ./

rm命令:
# 删除目录中的内容
rm xiyou/mingjie/sunwukong.txt
# 递归删除目录中所有内容
 rm -rf dssz/
 
mv命令:
# 重命名
mv xiyou/dssz/suwukong.txt xiyou/dssz/houge.txt
# 移动文件
mv xiyou/dssz/houge.txt ./

cat命令:
# 查看文件内容并显示行号
cat -n houge.txt

more命令:
# 采用more查看文件
more smartd.conf

less命令:
# 采用less查看文件
less smartd.conf

echo命令:
# 输出hello\world
echo "hello\tworld"
# 输出hello world
echo -e "hello\tworld"

head命令:
# 查看文件的头2行
 head -n 2 smartd.conf
 
tail命令:
# 查看文件头1行内容
tail -n 1 smartd.conf 
# 实时追踪该档的所有更新
tail -f houge.txt

>命令:
# 将ls查看信息写入到文件中
ls -l>houge.txt

>>命令:
# 将ls查看信息追加到文件中
ls -l>>houge.txt
# 采用echo将hello单词追加到文件中
echo hello>>houge.txt

ln命令:
# 创建软连接
ln -s xiyou/dssz/houge.txt ./houzi
# 删除软连接
rm -rf houzi
# 进入软连接实际物理路径
ln -s xiyou/dssz/ ./dssz

history命令:
# 查看已经执行的历史命令
 history
# 再次运行某一个历史命令
! 历史命令的行号

文件权限类

了解文件权限前,我们首先要知道什么是文件属性

  • 我们知道在Linux中,一切皆文件,并且Linux是一个多用户的系统,不同的用户操作系统时肯定不能让他可以任意操作,于是就有了文件权限
  • 我们可以使用命令ll来查看文件的权限在这里插入图片描述

文件的构成

打怪升级之小白的大数据之旅(三十九)<Linux常用命令>_第1张图片
一个文件由四个部分组成

  • 第一个字符代表这个文件是目录、文件或链接文件等
    • -代表文件
    • d 代表目录
    • l 链接文档(link file);
  • 第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
  • 第7-9位确定其他用户拥有该文件的权限 —Other
    在这里插入图片描述

权限的作用

知道了文件的权限构成,我们下面就来学习一下权限的作用

  • 作用到文件
    [ r ]代表可读(read): 可以读取,查看
    [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
    [ x ]代表可执行(execute):可以被系统执行
    
  • 作用到目录
    [ r ]代表可读(read): 可以读取,ls查看目录内容
    [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
    [ x ]代表可执行(execute):可以进入该目录
    

chmod改变权限打怪升级之小白的大数据之旅(三十九)<Linux常用命令>_第2张图片

我们知道了权限的构成以及权限的作用后,要根据实际需要改变文件的权限就需要使用命令chmod,改变方式有两种:

  • 方式一:使用字母改变
    chmod  [{ugoa}{+-=}{rwx}] 文件或目录
    
  • 方式二:使用数字改变
    chmod  [mode=421 ]  [文件或目录]
    

示例:

# 修改文件使其所属主用户具有执行权限
chmod u+x houge.txt
# 修改文件使其所属组用户具有执行权限
chmod g+x houge.txt
# 修改文件所属主用户执行权限,并使其他用户具有执行权限
chmod u-x,o+x houge.txt
# 采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限
chmod 777 houge.txt
# 修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限
chmod -R 777 xiyou/

chown改变所有者

  • chown用于改变文件或者目录的所有者,通俗一点来说就是改变建立文件的用户

基本语法:

chown [选项] [最终用户] [文件或目录]

示例:

# 修改文件所有者,将root用户改变为test用户
# 原文件drwxrwxrwx. 2 root root 4096 5月  8 18:20 houge.txt
 chown test houge.txt 
# 改变后的文件 drwxrwxrwx. 2 testroot 4096 5月  8 18:20 houge.txt
# 递归改变文件所有者和所有组
# 原文件drwxrwxrwx. 2 root root 4096 5月  8 18:20 xiyou
chown -R test:test xiyou/
# 改变后的文件 drwxrwxrwx. 2 test test 4096 5月  8 18:21 xiyou

chgrp 改变组

我们可以使用chgrp 这个命令改变这个文件的所属组,用户和组我在下面的第二优先级会讲到

基本语法

chgrp [最终用户组] [文件或目录]

示例:

# 修改文件的所属组
# 原文件 drwxrwxrwx. 2 test test 4096 5月  8 18:20 xiyou
chgrp root houge.txt
# 改变后的文件  drwxrwxrwx. 2 test root 4096 5月  8 18:23 xiyou

搜索查找类

find 查找文件或目录

  • find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端
  • find和which不是重点,重点是管道,这里直接示例就过了
  • 示例
# 按文件名:根据名称查找/目录下的filename.txt文件
find xiyou/ -name “*.txt”
# 按拥有者:查找/opt目录下,用户名称为-user的文件
find opt/ -user atguigu
# 按文件大小:在/home目录下查找大于200m的文件(+n 大于  -n小于   n等于)
find /home -size +204800

which 查找命令

which用来查到命令所在的目录位置,很简单

which cd

grep 过滤查找及 | 管道符

  • 到重点啦,管道我们会经常用到,所以要经常练习
  • 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理,使用 -n参数可以显示行号
  • 想象|就像一个水管,可以将左边的东西传递到右边,这就是过滤
  • 基本语法
    grep 选项 查找内容 源文件
    
  • 示例:
# 查找某文件在第几行
ls | grep -n test

进程线程类

  • 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源
  • 进程这个概念我们Java多线程的时候提到过哈,就不多说了
    进程线程常用的命令
命令 命令描述
ps 查看进程状态
kill 终止进程
pstree 查看进程树
top 查看系统健康状态
netstat 显示网络统计信息和端口占用情况

ps命令

我们常用的命令有两个

  • 查看系统中所有进程

    ps -aux | grep xxx
    

    打怪升级之小白的大数据之旅(三十九)<Linux常用命令>_第3张图片

  • 我们只需要关注下面三个参数即可

    PID:进程的ID号
    %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
    %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
    
  • 查看子父进程的关系

    ps -ef | grep xxx
    

打怪升级之小白的大数据之旅(三十九)<Linux常用命令>_第4张图片

  • 同样的,我们也只需要关注下面三个参数
    UID:用户ID 
    PID:进程ID 
    PPID:父进程ID 
    

kill 终止进程

kill的主要任务就是根据前面ps查找到对应的进程进行Kill
语法格式:

kill -9 进程ID/父进程ID

kill -9 的意思就是强制终止,固定写法哈

pstree进程树

  • 主要用来查看进程的关系,这个了解一下就好
  • 示例:
    # 显示进程pid
    pstree -p
    # 显示进程所属用户
    pstree -u
    

top 查看系统健康状态

  • 我们前面使用的进程查看命令,并不能动态显示,所以使用top可以详细查看我们系统的运行状态,当我们有某个异常代码导致内存溢出时很有用
  • 但我不建议使用top,我建议使用htop,直接在命令行下载即可
# 下载htop
yum install htop
# 使用htop
htop

netstat 显示网络统计信息和端口占用情况

这个命令通常搭配 grep管道使用

# 功能描述:查看该进程网络信息
netstat -anp |grep 进程号
 # 功能描述:查看网络端口号占用情况	  
netstat -nlp	| grep 端口号 

示例

# 通过进程号查看该进程的网络信息
netstat -anp | grep 火狐浏览器进程号
# 查看某端口号是否被占用
netstat -nlp | grep 20670

软件包管理类

  • 软件包管理就是管理软件的,软件的安装在Linux有两种方式,一种是使用软件包管理类进行网络下载安装,一种是解压缩免安装,我们后面的Hadoop就是免安装的,而在Linux中使用Mysql就需要进行下载安装
  • 软件包管理类分为RPMYUM两种,它们都是软件包管理工具,还记得我们前面学的maven么,就跟它类似,它就是一个软件管理仓库

RPM

  • 常用命令
    • RPM查询命令,我们通常使用管道来查询安装的软件包,不使用管道的话,就会显示所有安装的rpm软件包
      rpm -qa | grep rpm软件包
      
      # 查询firefox软件安装情况
      rpm -qa |grep firefox 
      
    • RPM卸载命令,使用 -e 参数是卸载软件包,但是会检查依赖,因为可能别的软件也会使用要卸载软件包中的某个依赖,如果使用 --nodeps就不检查依赖直接卸载,这可能会导致别的软件不能正常使用
      rpm -e RPM软件包
      rpm -e --nodeps 软件包  
      
    • RPM安装命令,通常使用 -ivh三个参数
      rpm -ivh RPM包全名
      # 安装firefox软件
      rpm -ivh firefox
      

YUM

  • YUM全称为:Yellow dog Updater, Modified,YUM基于RPM包管理,它可以自动处理依赖性关系
  • YUM是我们安装软件经常使用的命令,RPM倒是不太用,我们一般经常使用的就是安装与卸载的命令,其他的参数可以自行度娘哈
    yum install 软件包
    yum remove 软件包
    # 采用yum方式安装firefox
    yum -y install firefox
    

crond系统定时任务

  • 这个命令在以后我们做定时脚本的时候会经常使用到
  • 首先说一下重启crond服务,因为我们开启了定时任务后,修改了定时任务就必须重启才会生效
    # 重启定时任务的服务
    systemctl restart crond	```
    
    

crontab 定时任务设置

  • 基本语法
    crontab[选项]
    
  • 选项
    • -e 编辑crontab定时任务
    • -l 查询crontab任务
    • -r 删除当前用户所有的crontab任务
  • 定时任务的设置: 使用命令 crontab -e 打开vim
  • 使用语法: * * * * * 执行的任务
  • * 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思

参数说明

项目 含义 范围
第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

特殊的符号

特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

特定时间执行命令

时间 含义
45 22 * * * 命令 在22点45分执行命令
0 17 * * 1 命令 每周1 的17点0分执行命令
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令

注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

第二优先级

用户管理命令

  • 我们在安装CentOS时,默认只有一个超级管理员用户root,前面权限管理也提到了,在实际开发中,不能让所有用户都拥有所有权限,假如有某个人脑子一热直接 rm -rf / 那么就该跑路了…
    常用命令
命令 命令说明
hostname 查看当前服务器的主机名称
useradd 添加新用户
passwd 设置用户密码
id 查看用户是否存在
cat /etc/passwd 查看创建了哪些用户
su 切换用户
userdel 删除用户
who 查看登录用户信息
sudo 设置普通用户具有root权限
usermod 修改用户

示例:

# 修改当前主机名称
vim /etc/hostname
# 添加一个用户 tangseng
useradd tangseng
# 查看所有的用户
ll /home/
# 设置用户的密码
passwd tangseng
# 查看用户是否存在
id tangseng
# 查看创建了哪些用户
cat  /etc/passwd
# 切换到用户tangseng,但是root用户并没有关闭,而是挂起
su tangseng
# 退出当前用户
exit
# 使用tangseng用户登录服务器
su - tangseng
# 删除用户但保存用户主目录
userdel tangseng
# 删除用户和用户主目录,都删除
useradd zhubajie # 先添加一个用户
userdel -r zhubajie
ll /home/
# 显示自身用户名称
whoami
# 显示登录用户的用户名
who am i
# 将用户加入到用户组
usermod -g root zhubajie

设置普通用户具有root权限

# 1. 添加test用户,并对其设置密码
useradd test
passwd test
# 2. 修改配置文件
vi /etc/sudoers
# 3. 添加权限,在91行root下面
# root    ALL=(ALL)     ALL
testALL=(ALL)     ALL

用户组管理命令

  • 当我们创建一个用户的时候,默认会创建为这个用户创建一个同名的组,在实际开发中,运维会根据不同的项目来创建不同的项目组,然后再为每个项目组的成员创建一个用户,并赋予不同的权限,这就是我接受用户和用户组的原因,因为如果是创业公司。。那么大数据的搭建等等都是我们一个人或者会分配到项目组中

  • 常用命令

    命令 命令说明
    groupadd 新增组
    groupdel 删除组
    groupmod 修改组
    cat /etc/group 查看创建了哪些组

    示例

    # 添加一个xitianqujing组
    groupadd xitianqujing
    # 删除xitianqujing组
    groupdel xitianqujing
    # 修改test组名称为xitianqujing
    groupmod -n testxitianqujing
    # 查看创建了哪些组
    cat  /etc/group
    

压缩解压类

  • 我们在RPM软件包中提到过免安装,就是通过在windows等网络中下载一个压缩包,直接在Linux中解压缩就可以使用的软件,此时就需要使用到压缩解压缩类
  • 压缩解压缩分为三种
    • gzip/gunzip
    • zip/unzip
    • tar打包
  • gzip/gunzip只能压缩/解压缩文件,不能压缩目录,所有我就不多讲了

zpi/unzip

  • zip/unzip的压缩命令在Windows和Linux中都通用,可以压缩目录并且保留源文件
  • 基本语法
# 功能描述:压缩文件和目录的命令 -r参数用于压缩目录
zip  [选项] XXX.zip  将要压缩的内容
# 功能描述:解压缩文件 -d参数用户指定解压缩到指定的目录
unzip [选项] XXX.zip
  • 示例
# 压缩 1.txt 和2.txt,压缩后的名称为mypackage.zip 
zip mypackage.zip 1.txt 2.txt

# 解压缩mypackage.zip到 /opt下
unzip mypackage.zip -d /opt

tar打包

这个命令也是经常用到的,通常搭配 zcvf进行压缩或者 zxvf进行解压缩

  • 常用语法:
    打包目录,压缩后的文件格式.tar.gz
    tar xxxtar.gz  将要打包进去的内容
    
  • 示例
    # 压缩多个文件
    tar -zcvf houma.tar.gz 1.txt 2.txt 
    # 压缩目录
    tar -zcvf xiyou.tar.gz xiyou/
    xiyou/
    # 解压到当前目录
    tar -zxvf houma.tar.gz
    # 解压到指定目录
    tar -zxvf xiyou.tar.gz -C /opt
    

需要了解的命令

reboot 重新启动虚拟机,当我们进行一些系统的配置后需要使用该命令进行重启

常用的快捷键

常用快捷键 功能描述
ctrl + c 停止进程
ctrl+l 清屏
ctrl + q 用于虚拟机的退出
善于用tab键 提示(更重要的是可以防止敲错)
上下键 查找执行过的命令
ctrl +alt linux和Windows之间切换

帮助命令

帮助命令用于获取Linux命令的说明

命令 功能描述
man [命令或配置文件] 功能描述:获得帮助信息
help 命令 功能描述:获得shell内置命令的帮助信息

时间日期类

使用该命令可以操作时间日期

  • 基本语法
    date [选项]... [参数]
    

显示当前时间

命令 命令说明
date
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date “+%Y-%m-%d %H:%M:%S” 显示年月日时分秒

示例

# 显示当前时间信息
date
# 显示当前时间年月日
 date +%Y%m%d
# 显示当前时间年月日时分秒
date "+%Y-%m-%d %H:%M:%S"

显示非当前时间

命令 命令说明
date -d ‘1 days ago’ 显示前一天时间
date -d ‘-1 days ago’ 显示明天时间

示例

# 显示前一天
date -d '1 days ago'
# 显示明天时间
date -d '-1 days ago'

设置系统时间

这个一般不会使用,但还是提一下吧

# 设置系统当前时间
date -s "1970-01-01 0:0:0"

查看日历

一样,直接示例即可

# 显示当前年份的日历
cal
# 显示指定年份的日历
cal 2000

总结

  • 呼,终于把命令总结完了,Linux命令很多很多,我只是总结了一些我觉得比较常用的,大家首先熟悉第一优先级的命令,然后再了解一下第二优先级和一些需要了解的命令,当需要使用时,查看我这篇博客,使用 Ctrl+F直接搜索就好啦(这么详细的命令工具不收藏一波嘛???)
  • 下一章我来为大家带来Shell编程,当然了还是针对我们大数据会用到的一些知识点进行介绍,Shell编程之后就是Hadoop的知识点啦。前期的铺垫终于要完结了…

你可能感兴趣的:(linux,shell,操作系统,大数据)