linux (简单了解)
目录
一 文件管理
二 用户管理
三权限管理
四 软件管理
什么是Bash Shell
命令的解释,用来翻译用户输入的命令
Bash Shell 能做什么?
文件管理 软件管理 用户管理 权限管理 网络管理
Bash Shell
单行命令 脚本命令
4 linux 的登录提示符
[root@liuun2 /]#
root 当前登录的用户
liuun2 当前主机名称
/ 当前用户所在的路径
# 表示超级管理员
$ 表示普通用户
Bash Shell基础语法
| 命令 | 选项 | 参数 | 
| ls | 命令 | 查看当前目录下的所有文件 | 
| ls -l | 命令+ 选项 | 以列表的形式显示所有文件 | 
| ls -l /tmp | 命令=选项+参数 | 查看某路路径下的所有文件 | 
文件管理
对文件可以进行的操作
创建 删除 压缩 移动 复制 编辑 查看 查找
1. 文件的基础命令
| bin | 普通用户可以操作的命令 | 
| sbin | 管理员可以操作的命令 | 
| home | 普通用户的家目录 | 
| root | 管理员用户的家目录 | 
| boot | 
 存放启动系统时需要的文件 grub 引导菜单.内核文件  | 
| dev | 
 设备(硬盘.光盘.终端) /dev/rendom (摇钱树) /dev/null 黑洞  | 
| etc | 
 配置 (网卡,系统配置,服务配置) /etc/hostname 主机名称 /etc/sysconfig/network-script/ (网卡配置信息)  | 
| proc | 实时反馈当前系统的状态 | 
| tmp | 临时文件,那个用户上传的,那个用户删除 | 
| usr | 用户文件 | 
| var | 
 可变的目录 log pid 存放服务器进程的id -->Python ->30119 -->/var/pid/python.pid ( 30119 )  | 
常用命令表单
| 
 which  | 
命令 | 查找命令的绝对路径 | 
| touch | /路径/要创建的文件 | 创建文件 | 
| cp | /原路径/复制的文件/复制到的路径 | 复制(拷贝) | 
| rm | ( -f | -fr ) /路径/文件名 | 删除文件 | 
| 
 cat  | 
(-A | -n) /路径/文件名 | 查看文件中的内容 | 
| head | (- n) /路径/文件名 | n选着查看的行数 | 
| tail | (- f ) /路径/ | 
 (符实时追踪文件末尾的变化) 仅查看文件末尾的10行  | 
| 
 more less  | 
/路径/文件名 | 分页查看文件内容 | 
| mkdir | ( -p | -v) | 
 创建文件夹 (递归创建) (显示创建的过程)  | 
| mv | /要移动的路径/文件名 /移动到的路径 | 文件移动 | 
上传和下载
下载:
互联网到服务器
服务器到本地
上传:
本地到服务器
rz: 从本地上传到文件到 server
sz: 从server 下载文件到本地电脑
wget 获取互联网上的资源到本地
yum install wget -y
wget http://nginx.org/download/nginx-1.16.1.tar.gz
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
linux 编辑工具 vim
vim的基本介绍
1. 什么是vim?
文本文件对的编辑工具.
2. 为什么要使用vim?
linux中一切皆文件,需要修改配置文件,让软件按照我们的期望运行,所以使用编辑工具.
3.VI\VIM 的区别:
vim 有高亮显示
vi 没有高亮显示
VIM 的命令模式
复制: yy
粘贴: p
撤销: u
删除: dd | D 删除本行光标之后的所有内容
剪贴: (删除+粘贴)
光标操作
文件首行: gg
文件尾行: G
翻页操作:: ctrl+f向上翻页 Ctrl+b向下翻页
行首: ^ | 0
行尾: $
进入编辑模式
i: 直接进入编辑模式
o: 插入新的行,并且进入编辑模式
A: 光标移动到行尾,并且进入编辑模式
a: 光标向后移动一位,并且进入编辑模式
快速切换到你想要的行
vim file.py +Number
200gg 快速跳转到200行
:200 快速跳到200行
VIM 的编辑模式 (输入自己想写的代码)
VIM 的末行模式
保存: :w
退出: :q
保存并退出:: :wq
搜索: /search N 向上查 n向下查
替换:
:%s#要替换对的#替换成的#g
:1,5s#要替换的#替换成的#g
视图模式
shift+v 行模式:
复制 y
删除 d
Ctrl+v 块模式
加注释 shift+i -->输入#号注释符 -> 按ESC
删注释: 选中后,按 x 删除 一个字符
其他的操作
1. 开启行号: :set number
2. 搜索忽略大小写 :set ic
3. 取消高亮: :noh
vim 编辑故障:
打开文件,做了修改,关闭会话.
E: 直接编辑,会忽略关闭之前写的内容
R: 将之前编写没有及时保存的内容显示出来.确认没有错误保存退出
再次确认文件可以选择 D 删除或者是交换的swp文件,则不会再有提示
linux 文件类型
一切皆文件
- 文件
d 目录
s socket
c 字符设备
b 块设备 (磁盘)
file 查看文件的具体属性
linux 文件属性
-rw-r--r--. 1 root root 32 9月 27 11:46 test.py
- 文件;类型
rw-r--r-- 文件权限
1 硬链接次数
root 文件所属用户
root 文件所属组
32 文件大小
9月 27 11:46 最后修改时间 stat 详细时间记录
tas.py 文件名称
文件的压缩和打包
1.什么是打包?
压缩包是一种特殊的格式.将多个文件或者目录整理在一个文件中
2. 为什么要使用压缩包?
便于传输 压缩后体积会变小
3. 实现打包与压缩有哪些工具:
windows: zip tar
linux zip tar.gz
4. 压缩包如何实现:
gzip:(仅针对文件)
压缩: gzip /etc/yum.repos,d/CentOS-Bsae.repo
查看: zcat /etc/yum.repos.d/centOS-Base.repo.gz
解压: gzip -d /ect/yum.repos.d/CentOS-Base.repo.gz
zip:(针对文件和目录)
压缩: yum install zip unzip -y (原文件消失)
查看: zip -r yum_local.zip /etc/yum,repos.d/ /tmp/
解压: unzip yum_local.zip -d /pot/
tar.gz
c: 创建 z:压缩类型 f:指定文件名称 x:自动识别文件类型
创建 tar czf etc.tar.gz /ect/ /home/
压缩 tar xf etc.tar.gz
指定解压路径 tar xf etc.tar,gz -C /home/
用户管理
什么是用户
值能够正常登录操作系统
为什么要有用户
进程要依赖一个特定的用户身份,才可以正常的运行
服务器可能有多个用户,root的权限最大
用户分类
类型 名称 ID编号
超级用户 root 0
系统用户 1-999 为系统正常运转而使用的用户 系统用户 虚拟用户
普通用户 1000+ 能够正常登陆系统的用户 普通用户
进程能够以什么样的方式去访问文件或目录 . 取决于进程运行的'用户身份'对该目录或文件是否拥有对应的权限.
如何查询用户
id root (id+ 用户名)
得到 uid=0(root) gid=0(root) 组=0(root)
如何创建用户
useradd liuun (useradd 用户名)
id liuun 查看是否创建成功
uid=1001(liuun) gid=1001(liuun) 组= 1001(liuun)
创建的用户信息都放在那里 (存储用户信息以冒号为分割符,有7列)
cat /ect/passwd 查看用户信息
root:x:0:0:root:/root:/bin/bash
liuun:x:1001:1001:/home/liuun:/bin/bash
第一列 用户名称
第二列 密码占位符.(密码存放在 /ect/shadow 文件中)
第三列 用户的uid
第四列 用户的gid
第五列 描述信息 commit
第六列 用户的家目录
第七列 用户登录的Bash类型
用户的密码放在那里
/ect/shadow 文件中
创建用户的参数
-u: 指定用户的uid
-g: 指定用户的基本组 (不指定,默认创建与用户同名的组)
-G: 指定附属组
-c: 指定 注释消息
-s: 指定登录的bsah类型,(默认是 /斌/bash
-r: 指定系统用户
-M: 不创建用户的家目录
创建liuun用户,UID为5000.基本组为students.附属组为撒.注释信息为9211 new student.登录shell:/bin/bash
groupadd student
group sa
useradd liuun -u 5000 -g students -G sa -c '9211 new student' -s /bin/bash
创建mysql系统用户,-M不建立家目录 -s 指定Nologin使其用户无法登录系统
useradd mysql -人-M -s /sbin/nologin
如何删除用户
userdel -r username 删除用户,并删除用户的家目录 (不建议使用 -r )
如何为用户设置密码
设定密码的方式
交互式: passwd [username]
非交互式: passwd --srdin root 固定密码
echo $RANDOM | mdSsum | cut -c 2-10 | tee 1.txt | passwd --stdin root
批量创建用户
for user_name in old-{1..100}
  do
   pass=$(echo $RANDOM | md5sum  | cut -c 2-10)
   
   # 判断用户是否存在,如果存在则不创建
   id $user_name &>/dev/null
   if [ $? -eq 0 ];then
    continue
   else
    # 创建用户
    useradd $user_name 
    # 设定密码
    echo "$pass" | passwd --stdin $user_name &>/dev/null  # 设定密码,将结尾打到空
    echo "Username: $user_name  Password: $pass ok.."   # 将用户名和密码输出到面板
    echo "Username: $user_name  Password: $pass ok.." >> user_password.txt  #将用户名和密码输出到文件中
   fi
  done
交互式创建用户和密码
#!/usr/bin/bash
read -p "请输入你要创建的用户名称: " User
read -p "请输入你要创建的用户数量: " Number
#1.如何批量创建用户
for i in $(seq $Number)
do
user_name=$User-$i
pass=$(echo $RANDOM | md5sum | cut -c 2-10)
# 判断用户是否存在,如果存在则不创建
id $user_name &>/dev/null
if [ $? -eq 0 ];then
continue
else
# 创建用户
useradd $user_name
# 设定密码
echo "$pass" | passwd --stdin $user_name &>/dev/null
echo "Username: $user_name Password: $pass ok.."
echo "Username: $user_name Password: $pass ok.." >> user_password.txt
fi
done
用户组
组基本概念: 便于管理
组的分类: 所属组: 当创建一个用户时,如果不指定主组,会自动创建一个同名的组
附加组: 创建用户时可以指定我们新加入的附属组.此时用户就可以具有附加的组的权限
(主组只能有一个.附属组可以有多个)
创建组
-g 指定gid (默认不指定.则从1000+开始)
groupaddu -个5001 devops
删除组
groupdel decops
groupdel devops
groupdel:不能移动用户 'liuun' 的主组
userdel -r liuun
groupdel students
用户提权相关
su 切换身份
sudo 提权
权限管理
1. 什么是权限?
权限主要用来约束用户能对系统所做的操作
2. 为什么要使用权限?
因为系统中不可能只存在一个人root用户,一定还有其他的户, 为了保护每个登录的用户的隐私和工作环境,所以就有了权限
3.权限和用户之间的关系?
1) 系统给每个文件定义了三个身份 属性 属组 其它
2) 每个身份分别对应了三种权限 r读4 w写2 x执行1
4. 为什么要设置权限?
进程运行需要一个用户,而进程在完成上传的操作时.需要条用对应的用户来执行,能否执行成功,取决于给用户对该文件是否拥有权限
5. 怎么修改权限? (chmod)
chmod 640 文件名
6. 变更一个文件属主和属组/
chown -R www.www 文档-demo/
7 通过一个文件 文件上传和下载的demo?
1)安装PHP环境
setenforce 0 #关闭selinux
systenctl stopfirewalld #关闭fireewalld防火请
yum install httpd php -y
systenctl start httpd
wget http://fj.xuliangwei.com/public/kaoshi.zip
unzip kaoshi.zip -d /var/www/html/
2) 如果不调整权限,前台会提示成功,但实际是失败的
tail -f /var/log/ httpd/error_log
3) 变更写入目录的属主和属组(不要修改为777,权限太大不好)
1检查进程运行的用户身份是什么: apache
ps -ef | grep httpd | head -2
             root      24130      1  0 10:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND  #Master进程
             apache    24132  24130  0 10:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND  #Worker进程
2 检查进程要写入的目录是什么权限:
ll -d /var/www/html/
drwxr-xr-x. 2 root root 77 9月 29 10:21 /var/www/html/
总结: 写布景区的原因: 进程会调用apache用户往 /var/www/html目录写, 而apache用户对/var/www/html目录仅拥有 读和执行,所以会失败.
.       3 调整/var/www/html 属主和属组
             [root@oldboy-pythonedu ~]# chown apache.apache /var/www/html/
             [root@oldboy-pythonedu ~]# ll -d /var/www/html/
             drwxr-xr-x. 2 apache apache 77 9月  29 10:21 /var/www/html/
  
         3.4) 最后验证程序是否能正常上传文件至/var/www/html/中
            [root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/ -d
            drwxr-xr-x. 2 apache apache 25 9月  29 10:27 /var/www/html/2020-09-29/
  
            [root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/
            -rw-r--r--. 1 apache apache 438 9月  29 10:27 2_oldxu.txt
rpm软件包管理
1.什么是rpm ? redhat package mananger 红帽包管理工具, xxx.rpm 主要用来安装软件包.
2.二进制包 解压即用
3.源码包 编译 ---> 二进制可执行文件
A包 -> B包 -> C包
--> D包 --> E包
---> F包
安装
[root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-27.el7.x86_64.rpm
卸载
[root@oldboy-pythonedu ~]# rpm -e vsftpd
升级:Uvh
[root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.0/x86_64/RPMS/mongodb-org-shell-3.0.0-1.el7.x86_64.rpm
查询结果
[root@oldboy-pythonedu ~]# rpm -qa  | grep mongodb
 mongodb-org-shell-3.0.0-1.el7.x86_64
升级版本
[root@oldboy-pythonedu ~]# rpm -Uvh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.2/x86_64/RPMS/mongodb-org-shell-3.2.0-1.el7.x86_64.rpm
再次检查
[root@oldboy-pythonedu ~]# rpm -qa | grep mongodb
 mongodb-org-shell-3.2.0-1.el7.x86_64
查询命令:
 [root@oldboy-pythonedu ~]# rpm -q httpd     #查询安装或者没有安装
 [root@oldboy-pythonedu ~]# rpm -qa      #显示系统中所有已安装的软件包
 [root@oldboy-pythonedu ~]# rpm -qa | grep httpd   #查询所有系统已安装的软件包,过滤指定的包名
 [root@oldboy-pythonedu ~]# rpm -qc httpd    #仅查看httpd这个包的配置在哪里
 [root@oldboy-pythonedu ~]# rpm -ql httpd    #查看httpd这个包所有的文件存储的路径
 
痛点:   rpm工具还是无法解决依赖间关系, 所有就有了  yum工具.
3.yum工具 ( 联网 ) 1) 什么是yum rpm包管理工具,主要用安装软件, 通过互联网安装软件. 并能解决依赖间关系.
源: 存储在服务器中的一个repo文件, 文件中存储的是仓库的地址
仓库: 一推软件包的集合,源如果指向这个仓库,那么服务器就可以直接获取该仓库中的软件包
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装
[root@oldboy-pythonedu ~]# yum install samba -y
更新
[root@oldboy-pythonedu ~]# yum update samba -y
卸载
[root@oldboy-pythonedu ~]# yum remove samba -y
查询
知道命令,但是不知道安装哪个软件包,
知道配置文件的路径,但是不知道是哪个软件包生成出来的.
[root@oldboy-pythonedu ~]# yum provides ifconfig
[root@oldboy-pythonedu ~]# yum provides /etc/my.cnf
[root@oldboy-pythonedu ~]# yum clean all #清理所有的缓存
[root@oldboy-pythonedu ~]# yum makecache #生成缓存
[root@oldboy-pythonedu ~]# yum repolist #查看仓库中的软件包
linux (简单了解)的更多相关文章
- [原创]linux简单之美(一)
		
原文链接:linux简单之美(一) 话说windows也有syscall,这是必须的.但是win的syscall可以直接call吗?可以是可以但是破费周折,搞成SDT之类的复杂概念.下面看看linux ...
 - [原创]linux简单之美(二)
		
原文链接:linux简单之美(二) 我们在前一章中看到了如何仅仅用syscall做一些简单的事,现在我们看能不能直接调用C标准库中的函数快速做一些"复杂"的事: section . ...
 - [原创]linux简单之美(三)
		
原文链接:linux简单之美(三) 在linux简单之美(二)中我们尝试使用了C库的函数完成功能,那么能不能用syscall方式来搞呢?显然可以! section .data ft db sectio ...
 - Linux学习之十七-配置Linux简单的脚本文件自启动
		
配置Linux简单的脚本文件自启动 在Linux中使用shell脚本解决一些问题会比单独执行多条命令要有效率,脚本文件规定命名以.sh结尾,最基本的规则就是其内容是命令,想要脚本文件开机自启动,就需要 ...
 - 五大Linux简单命令解决系统性能问题
		
五大Linux简单命令解决系统性能问题 2010-12-17 10:07 James Turnbull TechTarget中国 字号:T | T 管理Linux主机的性能看起来经常象是在变魔术一样. ...
 - Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
		
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
 - 一篇文章带你了解服务器操作系统——Linux简单入门
		
一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...
 - linux简单配置
		
lsof -i lsof -i:211.判断apache查找httpd路径: ps aux | grep httpd 结果: /usr/local/apache/bin/httpd /usr/loc ...
 - Linux 简单字符设备驱动程序 (自顶向下)
		
第零章:扯扯淡 特此总结一下写的一个简单字符设备驱动程序的过程,我要强调一下“自顶向下”这个介绍方法,因为我觉得这样更容易让没有接触过设备驱动程序的童鞋更容易理解,“自顶向下”最初从<计算机网络 ...
 - Linux简单程序实例(GNU工具链,进程,线程,无名管道pipe,基于fd的文件操作,信号,scoket)
		
一, GNU工具链简介: (1)编译代码步骤: 预处理 -> 编译 -> 汇编 -> 链接: 预处理:去掉注释,进行宏替换,头文件包含等工作: gcc -E test.c -o te ...
 
随机推荐
- spring framework源码之AnnotationConfigApplicationContext
			
AnnotationConfigApplicationContext 内部使用了AnnotatedBeanDefinitionReader:ClassPathBeanDefinitionScanner ...
 - 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!
			
前言 前面小飞已经讲解了NIO和Netty服务端启动,这一讲是Client的启动过程. 源码系列的文章依旧还是遵循大白话+画图的风格来讲解,本文Netty源码及以后的文章版本都基于:4.1.22.Fi ...
 - 详尽的 Elasticsearch7.X 安装及集群搭建教程
			
为了更好的阅读体验,欢迎访问 原文阅读链接 简介 首先引用 Elasticsearch (下文简称 ES)官网的一段描述: Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分 ...
 - 【转】Locust性能-零基础入门系列(1)-wait_time属性用法
			
本篇文章,从局部出发,利用一个简单的测试,来说明场景模拟的wait_time属性的用法.wait_time为什么要单独拎出来讲,是因为它主要有两种模式,而初学者对这两种模式,容易混淆.1) wait_ ...
 - python中闭包详解
			
谈谈自己的理解:python中闭包,闭包的实质 闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个 ...
 - 目标检测算法(一):R-CNN详解
			
参考博文:https://blog.csdn.net/hjimce/article/details/50187029 R-CNN(Regions with CNN features)--2014年提出 ...
 - redis过期策略以及内存淘汰机制(理论+配置)
			
一.redis的过期策略: redis的过期策略是:定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的k ...
 - jQurey轮播插件slides简单使用教程
			
动态演示地址: http://www.zqunyan.com/zgproduction/slidesjs/index.html 简介就不多说了,网上有很多,复制粘贴没意义,会想到用这个插件就代表已经了 ...
 - 078 01 Android 零基础入门  02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
			
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
 - 树型大融合——NOIP提高组2015 D1T3 【运输计划】
			
下午用一个小时看了一下树上差分,打了个差分模板,A了3题,真的爽! 题目描述: 公元2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 ...