Linux进阶内容

1 服务管理

计算机中,一个正在执行的程序或命令,被叫做进程(process)。
启动之后一只存在、常驻内存的进程,一般被称服务(service)。

1.1 centos6及之前

1.1.1 服务操作

# 开启/停止/重启/查看状态 服务
service 服务名start | stop | restart | status
# 查看该服务器有哪些服务
cd /etc/init.d

案例实操

# 查看网络服务的状态
service network status

# 停止网络服务
service network stop

# 启动网络服务
service network start

# 重启网络服务
service network restart

1.1.2 服务自启动配置

基本语法
chkconfig 服务名 操作 (功能描述:操作所有服务器自启配置)

# 关掉指定服务的自动启动
chkconfig 服务名 off 

# 开启指定服务的自动启动
chkconfig 服务名 on 

# 查看服务开机启动状态
chkconfig 服务名 --list 

查看所有服务运行级别

运行级别

开启/关闭network(网络)服务的自动启动

chkconfig network on
chkconfig network off

开启/关闭network 服务指定级别的自动启动

chkconfig --level 指定级别 network on
# 如chkconfig --level 3 network on

chkconfig --level 指定级别 network off

1.2 centos7及之后

1.2.1 服务操作

# 开启/停止/重启/查看状态 服务
systemctl start | stop | restart | status 服务名
# 查看该服务器有哪些服务
cd /usr/lib/systemd/system

案例实操

# 查看防火墙服务的状态
systemctl status firewalld

# 停止防火墙服务
systemctl stop firewalld

# 启动防火墙服务
systemctl start firewalld

# 重启防火墙服务
systemctl restart firewalld

1.2.2 后台服务的自启配置

基本语法

systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)

开启/关闭iptables(防火墙)服务的自动启动

systemctl enable firewalld.service
systemctl disable firewalld.service

系统运行级别

CentOS7 的运行级别简化为:

  • multi-user.target 等价于原运行级别3(多用户有网,无图形界面)
  • graphical.target 等价于原运行级别5(多用户有网,有图形界面)

查看当前运行级别

systemctl get-default

修改当前运行级别

# 这里TARGET 取multi-user或者graphical
systemctl set-default TARGET.target 

2 帮助命令

2.1 man 获得帮助信息

查看 ls 命令的帮助信息

man ls

2.2 help 获得 shell 内置命令的帮助信息

一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”。

help cd

3 用户管理命令

3.1 useradd 添加新用户

基本语法

useradd 用户名 (功能描述:添加新用户)
useradd -g 组名 用户名 (功能描述:添加新用户到某个组)

案例实操

# 添加一个tony用户,默认无密码
useradd tony

# 查看该用户所在目录,默认在/home创建一个tony的文件夹
ls /home

# 为该用户设置密码
passwd tony

# 查看该用户是否存在
id tony
# 默认用户组id和用户id相同
uid=1002(tony) gid=1002(tony) groups=1002(tony)

查看该主机拥有哪些用户

# 自创建用户从1000开始
cat /etc/passwd

3.2 su 切换用户

基本语法

不带用户名称,默认切换到root用户,普通用户切换root用户需要输入root用户密码。

  • su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
  • su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)

3.3 userdel 删除用户

基本语法

  • userdel 用户名 (功能描述:删除用户但保存用户主目录)
  • userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
userdel -r tony

3.4 sudo 设置普通用户具有 root 权限

使用sudo命令来切换root权限时,需要root用户先修改配置文件,赋予该用户切换root权限的权限

vim /etc/sudoers

修改 /etc/sudoers 文件,找到下面一行(91 行),在 root 下面添加一行,如下所示:

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tony ALL=(ALL) ALL

配置成采用 sudo 命令时,切换root权限时不需要输入tony用户密码

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tony ALL=(ALL) NOPASSWD:ALL

修改完毕,现在可以用 tony帐号登录,然后用命令 sudo ,即可获得root 权限进行操作。

  • sudo su 切换root身份,不携带当前用户环境变量。
  • sudo su - 切换root身份,携带当前用户环境变量。

7.6 文件权限类
7.6.1 文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。
1)从左到右的 10 个字符表示,如图 7-1 所示
图 7-1 文件属性
如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:
(1)0 首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等- 代表文件
d 代表目录
l 链接文档(link file);
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
(3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
(4)第7-9位确定其他用户拥有该文件的权限 ---Other

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

举例

  • d表示该文件是个目录。
  • rwx表示该文件所属用户对其拥有,读,写,执行权限。
  • r-x表示和root用户同一组的其他用户对该文件拥有,读,执行权限。不具有写权限。
  • r-x表示其他用户对该文件拥有,读,执行权限。不具有写权限。
  • 第一个root表示该文件属主,属于root用户,第二个root表示root用户所在的属组。

7.6.2 chmod 改变权限

r=4 w=2 x=1 rwx=4+2+1=7

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

7.6.3 chown 改变所有者
1)基本语法
chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)

  • 选项:-R 递归操作
# 将houge.txt文件的属主改为atguigu用户
chown atguigu houge.txt
# 查看该文件详细信息
ls -al
# 属主已改变,属组还是root
-rwxrwxrwx. 1 atguigu root 551 5 月23 13:02 houge.txt

递归改变文件夹内所有文件的属主和属组

# 未改变前,查看文件详细信息
ll
# 属主和属组都是root
drwxrwxrwx. 2 root root 4096 9 月3 21:20 xiyou
# 递归改变属主和属组
chown -R atguigu:atguigu xiyou/
# 再次查看
ll
# 已经改变
drwxrwxrwx. 2 atguigu atguigu 4096 9 月3 21:20 xiyou

7.6.4 chgrp 改变所属组

# 将houge.txt文件属组改为root组
chgrp root houge.txt
# 查看
ls -al
# 属组已改变
-rwxrwxrwx. 1 atguigu root 551 5 月23 13:02 houge.txt

7.7 搜索查找类
7.7.1 find 查找文件或者目录
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1)基本语法
find [搜索范围] [选项]

搜索范围:

  • -name<查询方式> 按照指定的文件名查找模式查找文件
  • -user<用户名> 查找属于指定用户名所有文件
# 根据名称查找/目录下的以txt结尾的文件。
find xiyou/ -name "*.txt"
# 查找/opt目录下,用户名称为atguigu的文件
find xiyou/ -user atguigu
# 在/home目录下查找大于200m的文件(+n 大于-n 小于 n等于)
find /home -size +200M

7.7.2 locate 快速定位文件路径
locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate 时刻。

  • 由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb 指令创建locate 数据库。
updatedb
locate pdu

7.7.3 grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

例:

  • 在mydata.txt文件中多次出现boot关键字,想要快速定位这些关键字在该文件的第几行,可以使用grep
grep -n boot mydata.txt

7.8 压缩和解压类
7.8.1 gzip/gunzip 压缩
1)基本语法
gzip 文件(功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
2)经验技巧
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
(3)同时多个文件会产生多个压缩包

[root@hadoop101 ~]# ls
houge.txt
[root@hadoop101 ~]# gzip houge.txt
[root@hadoop101 ~]# ls
# 不保留原来的文件
houge.txt.gz
# 解压
[root@hadoop101 ~]# gunzip houge.txt.gz
[root@hadoop101 ~]# ls
houge.txt

7.8.2 zip/unzip 压缩
1)基本语法
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令

压缩文件夹

[root@hadoop101 opt]# touch bailongma.txt
[root@hadoop101 ~]# zip mypackage.zip houge.txt bailongma.txt
adding: houge.txt (stored 0%)
adding: bailongma.txt (stored 0%)
[root@hadoop101 opt]# ls
houge.txt bailongma.txt mypackage.zip

解压压缩文件

[root@hadoop101 ~]# unzip mypackage.zip
Archive: houma.zip
extracting: houge.txt
extracting: bailongma.txt
[root@hadoop101 ~]# ls
houge.txt bailongma.txt mypackage.zip

解压到指定文件夹

[root@hadoop101 ~]# unzip mypackage.zip -d /opt
[root@hadoop101 ~]# ls /opt/

7.8.3 tar 打包
1)基本语法
tar [选项] XXX.tar.gz 将要打包进去的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)

选项功能
-c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar 文件
-C 解压到指定目录

打包并压缩多个文件及文件夹

# 将文件 a.txt b.txt 及目录mydir/ 打包并压缩为mytest.tar.gz文件 
tar -zcvf mytest.tar.gz a.txt b.txt mydir/ 

解压到指定目录下

tar -zxvf mytest.tar.gz -C /tmp

7.9 磁盘查看和分区类
7.9.1 du 查看文件和目录占用的磁盘空间
du: disk usage 磁盘占用情况

posted @ 2022-04-20 18:14  初夏那片海  阅读(263)  评论(0)    收藏  举报