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 ...
随机推荐
- 【读书】Into The Air:进入空气稀薄地带
珠穆朗玛峰,世界第一高峰,北部在中国境内,南部在尼泊尔境内.喜欢户外运动的人,曾经在20多岁的时候曾经"大言不惭"说这一辈子一定要去一次珠峰.<Into the Air> ...
- Spring源码系列——容器的启动过程(一)
一. 前言 Spring家族特别庞大,对于开发人员而言,要想全面征服Spring家族,得花费不少的力气.俗话说,打蛇打七寸,那么Spring家族的"七寸"是什么呢?我心目中的答案一 ...
- springboot的启动流程源码分析
.测试项目,随便一个简单的springboot项目即可: 直接debug调试: 可见,分2步,第一步是创建SpringApplication对象,第二步是调用run方法: 1.SpringApplic ...
- WordPress用户角色权限
[转自:群燕小站(http://www.zqunyan.com):原文链接: http://www.zqunyan.com/158.html] WordPress默认的用户角色有5个:订阅者,投稿者, ...
- dhtmlxGantt独立安装的系统要求
dhtmlxGantt库提供了使用导出作为在线服务从甘特图导出和导入数据的可能性. 您还可以通过在计算机上安装导出服务来本地导出甘特图.您需要确保系统满足系统要求才能使用导出模块: PNG / PDF ...
- makefile实验三 理解make工作的基本原则
代码简单,但测试花样多,若能回答对本博客的每个步骤的预期结果,可以说对makefile的基础掌握是扎实的. 一,当前的makefile代码 root@ubuntu:~/Makefile_Test# r ...
- C/的常用位运算符
双目运算符 位逻辑运算符 有6种位运算: & 与运算 | 或运算 ^ 异或运算 ! 非运算(求补) >> 右移运算 << 左移运算 与运算(&)双目运算.二个位 ...
- getopt函数用法
getopt被用来解析命令行选项参数. #include <unistd.h> extern char *optarg; //选项的参数指针 extern int o ...
- CRUD,分页,排序,搜索与AngularJS在MVC
下载source - 53.1 MB 介绍 在选择最新的技术时,有几个因素会起作用,包括这些技术将如何与我们的项目集成.这篇文章解决了开始使用AngularJS和MVC的乞丐的问题.这篇文章告诉使用语 ...
- React踩坑笔记 —— React
Webpack提供了自己的导入方式require.include,但同时也支持commonjs规范或AMD规范的require语法,而Node.js使用的就是common.js,ES6的语法Impor ...