linux31

linux3 的用户管理:

root 权限
普通用户 没法进入root :cd /root
也没法去remove了

今日 作业 错题

找一下python3 命令的绝对路径
which python3 错误写法: find / -name 'python3'找的是含有python3的
如何统计home文件夹的总大小
du -sh /home 错误写法:ls -lh /home 找的是一个个的
在服务器启动django并且让用户访问
python3 manage.py runserver 192.168.230.129:8000 错误写法:写成python了

1 用户管理权限

1.1 ls -l 查看权限
普通用户 : 自己分配的资源进行操作
用户组: 具有相似权限的多个用户的集合 (便于管理)

w.1 root 为什么叫root uid ?
linux 系统用户默认创建的UID 0-999开始
root 创建的普通用户id 是从1000开始的 由管理员创建

root 可以创建普通用户
1.2 创建用户 useradd 存在/etc/passwd
passwd 可以更改密码 用法:passwd 用户名

1.3 userdel 用户 : 删除用户
1.4 查看所有用户 : cat /etc/group cat /etc/passwd

1.5 id : 产看用户信息的 直接输入id 显示当前登陆的信息 root的

uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
id liuyang
uid=1001(liuyang) gid=1001(liuyang) groups=1001(liuyang)

gid : 用户组 方便关联整个用户的

id liuyang -g     查看所在组  id就行了  多此一举
1001

2 用户切换
su 命令 中间必须加上横杠,代表完全的用户环境变量切换

语法
2.1 su - 用户名

root 可以随意的切换普通用户
普通用户切换 : 切换root 需要输入root的密码
切换用户 需要输入用户的密码

退出登录
logout ctrl+d

2.2 sudo ls /root 尚方宝剑 必须配置sudo
用户提权的命令之一 sudo
sudo 配置
sudo命令用来以其他身份来执行命令,预设的身份为root。

1 用root打开 /etc/sudoers文件	 vim /etc/sudoers
2 找到如下行,改 

vim 打开  黄马褂  配置错了   用户名 ALL = (ALL)  ALL yy q 一下
3 此时 普通用户 就可以使用 sudo命令了
    [root@bogon ~]# su - qq
	[qq@bogon ~]$ sudo ls /   普通用户就可以查看root里面的内容了

vim快捷键:93 定位 /root 搜索 n下一个 (vim写错了没有任何的提示)

2.3 visudo(也在linux) 有提示 会报错
what now? 你现 在想干嘛?
三个 ALL = ALL ...

userdel 删除用户
userdel -rf 用户名

kill 消除进程 ~ -9 3284

文件与文件夹的权限

对文件的读写执行和对文件夹的读写执行不一样

什么是权限 :所有者,和所有组, 可读可写可执行
cd /tmp 3.1 ll 查看权限
属主 属组 既不属于属主组的是其他人 qq

![文件权限](E:Downloadqq_download eacher_huatu_downloads20pyLinuxday81 linux3文件权限.png)

linux软链接:快捷方式
3.2 ln -s 目标文件夹 快捷方式文件
ln -s /home/木兰诗.txt /home/qq/mulan.txt 复制快捷方式

在复制了的/home/qq/mulan.txt 里查看软连接 3.3 ls -l ll也行
-dl

.sh 什么文件夹 -rw-r

3.4 chmod 777 hehe.sh 777最高权限 绿色代表可执行

-rw-r--r--.  1 root root 175740458 Jun 27 15:24 木兰诗.txt
drwxr-xr-x. 2 qq   qq    6 Jun 26 15:05 Desktop
lrwxrwxrwx. 1 root root 19 Jun 28 17:55 mulan.txt -> /home/木兰诗.txt

-普通文件
d文件夹
l然谅解

-rw- r-- r-- 解读它 rw-(属主权限) r--(属组) r--(第三者)
3.5 chmod 000 文件 没权限 root权限厉害有权限 普通的就是-----

r 可读 4
w 可写 2
x 可执行 (绿色表示可执行) 1

修改文件的权限
change mode (chmod)

语法
ugo 用户 组 其他人
chmod 权限 操作的对象

chmod u+r file chmod u-r
chmod o+r 文件 加可读 其他人
chmod u+r 文件 加可读 用户
chmod w+r 文件 加可读 用户组
chomd g+r/w/x 都加上

读写执行的权限是有顺序的
必须是
rwx 可读可写可执行
r-- 只读

chmod 数字权限 文件对象
chmod 666 文件权限
-rw-rw-rw-
4+2+0 4+2+0 4+2+0
user other 属主属组其他人

更改成别人的文件
change

更改文件的属主 change own
3.6 chown 用户名 file
更改文件的属组 change group
3.7 chgrp 用户名 file

文件的读写执行
r cat more less
w echo vim
x 直接执行 或文件夹的

文件夹的读写执行
r ls
w 进入文件夹创建文件touch
x cd 可以进入文件夹

chmod 004 user 加

linux 的命令提示符

通过PS1 变量所控制
hostname 主机名
修改主机名 hostnamectl set-hostname 20
改命令提示符 ~ 不显示先相对路径 相对绝对路径 好看一点在哪 还有时间
PS1=""
3.9 echo $PS1 查看命令提示符

[u@h w ]$ 显示时间 绝对路径
3.10 hostname 查看主机名
3.11 hostnamectl set-hostname s20 设置主机名为s20 要退出会话重新登陆
PS1 = ‘[u@h w ]$’ 改成自动变化相对路径的格式

#linux的网络端口管理命令
netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;

4 命令
django开启了,怎么知道,看进程
4.1 natstat 命令 tunlp
natstat - tunlp

4.2 curl 发起http请求的 地址:8000/hello
curl 地址:8000/hello

关闭防火墙的命令
4.3 iptables -F
关闭防火墙服务
4.4 systemctl stop firewalld

linux 进程管理
4.5 ps 命令
4.6 ps -ef 显示所有进程情况

通过进程id号管理
杀死进程的命令 |grep python 不是django 这个是grep产生的进程

ps -ef|grep django 有grep和django的是自己的grep进程 , 找python的进程

4.7 kill 进程id kill 12251
4.8 pkill 支持正则的 通过pid处理的
pkill crm (不好乱用的 一个下去都删了,公司里)
kill 还有一个参数 -9 强制终止(不重要的僵尸进程,慎用:也有可能杀死依赖进程)

防火墙
iptables 是软件防火墙 ,公司可能会用,可能不会用,还有硬件防火墙的存在,保证服务器安全,学习阶段,为了实验安全

export 读取shell 变量的命令
df 命令 读取磁盘空间

英文版本
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
。。。

yum install tree -y 安装
tree 工具,以树状图显示目录结构

dns 域名解析系统
把域名解析成ip地址,网络中的一个超大电话簿

公网中,存在dns服务器,进行解析
在linux中的dns服务器配置文件是

查看Linux的dns
/etc/resolv.conf 里面定义了网络中的dns

dns:
阿里巴巴:233.5.5.5 233.6.6.6
腾讯的dns : 119.29.29.29
谷歌的dns:8.8.8.8
114的dns:114.114.114.114

访问百度,却访问到发牌的网站,hosts文件,强制解析了,也可能更换了你的dns记录
用于测试本地的假域名(之后ngix域名不买)

网络设置,以太网,详细信息: dns服务器:
linux: vim /etc/resolv.conf 自己写dns服务

nameserver 8.8.8.8

ping baidu.com
ping 123.206.16.61 可以用 去检测
域名服务没写 : namesever : 8.8.

域名查找 :

​ address: 域名地址 下一个address 是ip地址

vim /etc/hosts 修改 hosts权限
添加一个 127.0.0.1 www.baidu.com
在访问就访问不到了,因为host优先级比那个DNS高

dns 解析流程

1 浏览器输入域名的时候,浏览器优先去hosts文件中寻找时候有对应记录
2 没有记录就去dns本地缓存中寻找,是否有记录
3.寻找是否配置了dns服务器,然后去公网中寻找记录
4.找到了就缓存到本地dns记录中,
5.解析结束

free -m 看缓存

echo '0' > /proc/sys/vm/drop_caches 清缓存 哪个写错了

#linux的定时任务

时间点到了自动去执行 任务

crontab -e 编辑定时任务的文件

* * * * * echo '爱的魔力转圈圈' >> /home/ai.txt   #>>前后有空格  * echo有空格	  删除的话: 把第一行删除
tail -f ai.txt

crontab -l 列出定时任务的规则
分时日月周 做什么事情 你要执行的命令的绝对路径
/* * * * *

*所有的可能值
每分钟执行一次命令

crontabl -e
/* * * * *
echo 绝对路径 +
题目:

#每小时的整点执行命令 
0   *    *   *   *
#在上午8-11点的第3和第15分钟执行
分   时   日  月  周  命令的绝对路径
3,15  8-11  *  *  *   
#每晚21:30执行命令
分   时   日  月  周  命令的绝对路径
30   21   *  *  *  
#每周六、日的下午1:30执行命令
分   时  日  月  周   命令的绝对路径
30   13   *   *  6,0   
#每周一到周五的凌晨1点,清空/tmp目录的所有文件
分   时  日  月  周 命令的绝对路径
0   1   *  *  1-5   /usr/bin/rm -rf /tmp/*
#每晚的21:30重启nginx
30 21 *  *  *  /usr/bin/systemctl restart nginx
#每月的1,10,22日的4:45重启nginx
分   时  日  月  周 命令的绝对路径
45   4    1,10,22  *  *  /usr/bin/systemctl restart nginx
#每个星期一的上午8点到11点的第3和15分钟执行命令

3,15  8-11  *  *  1  

tail -f hehe.txt
关闭 : crontab -e 进入 都删了 !wq 保存 crontab -l 查看

软件包

软件开发规范 .config
setup.py 编译的文档 去github 开源 django 看结构
linux软件包的格式
mysql -5.5.rpm
以及rpm也是一个软件包管理命令
rpm -ivh mysql-5.5.rpm

rpm 管理软件得手动处理依赖关系,不适用!
yum install 推荐使用!!! <自动处理依赖关系 ,最好配置个源,比较好
源代码编译安装,获取软件源代码,手动编译安装(可以自由扩展软件,选择最新的软件) :纯净

yum工具是红帽子才有的软件管理工具,例如suse 乌班图 是别的管理工具

yum install mysql 都是yum软件仓库服务器
是国外的,用阿里的下载
https://opsx.alibaba.com/mirror 以后去公司下载镜像,这个网站

linux的yum仓库目录是:

cd /etc/yum.repos.d/ 这个目录下,第一层中,所有以.repo结尾的文件,都会识别为一个yum仓库
(这个仓库就是一个url),url中提供了各种rpm包的下载,yum工具回去查找

yum install nginx base : url源

配置阿里云的yum源的步骤
1.地址如下:https://opsx.alibaba.com/mirror
2 备份原本的yum库文件(防止改错了)
cd/etc/yum.repos.d
新建文件夹
mkdir allrepo
移动所有的repo文件到这个目录下,不用他了mv * ./allrepo

出现了第一个
3 . 下载新的yum 库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

-O 代表把Centos-7.repo 下载到指定目录repos.d,且改名 url主机地址 文件目录

4 .配置额外的第三方仓库epel 不能连接,可能是少插件什么的
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

nginx :80的网络服务 其实定义到index.html文件的 192.168.230.129/index.html
dg是清空

5.可以测试yum工具安装一个nginx 从epel仓库里下载的
yum install nginx -y
6.启动nginx测试访问
systemctl start nginx # ps -ef |grep nginx 查看进程

and : epel : extra packages enterprise linux 企业版的额外的包

老师的就是ngnix搭起来的
好玩的玩法: 把find / -name index.html 把nginx的改成 dnf的源代码网页
再更改一下 gbk --> utf8 访问网址就到了dnf 但是 页面跳转可以用就是别人的网页

yum还提供了哪些用法

1.
yum repolist all        列出所有仓库
yum list all            列出仓库所有软件包
yum info 软件包名            查看软件包信息
yum install 软件包名        安装软件包
yum reinstall 软件包名    重新安装软件包
yum update    软件包名        升级软件包
yum remove    软件包名        移除软件包
yum clean all            清楚所有仓库缓存
yum check-update        检查可以更新的软件包
yum grouplist            查看系统中已安装的软件包
yum groupinstall 软件包组    安装软件包组

系统服务管理命令

老企业: 不求技术,稳定就行
systemctl status nginx

centos7 用system服务管理
systemctl start/stop/reload/restart/ nginx

systemctl enable nginx 设置Nginx开机自启
systemctl disable nginx 禁止开机自启
systemctl disable firewalld #永久关闭开机自启
systemctl stop firewalld #临时关闭防火墙服务

systemctl enable firewalld

centos6/5/4
service nginx start/stop/restart

虚拟环境讲解

不同且互不干扰的 虚拟环境
太多模块了 不一定用,但是还得都安装
目的: 一个跑爬虫 一个跑flask 没有别的 , 都是解释器 虚拟解释器
pip3 list window命令里查看插件python
插件臃肿,还不适用所有 django flask

每一个解释器单走一个 应用 ,解耦合

安装virtualenv 虚拟环境工具
venv1 走django1.0
venv2 走2.0
venv3 走flask

1 下载虚拟环境工具(这里是在物理环境下安装的)没安装虚拟 直接python或者pip都是本体
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

​ pip3 install --upgrade pip 升级 pip
2 使用命令,创建虚拟环境,分别运行一个django1和django2

#进入一个统一管理的目录,管理虚拟环境例如/opt/allenv
mkdir  /opt/allenv
cd /opt/allenv 

virtualenv --no-site-packages --python=python3   venv1

#参数解释		--no-site-packages  不要任何的第三方包
--python 是指定一个解释器 我们选的是python3
venv1是虚拟环境文件夹的名字,自定义

3 进入虚拟环境目录,激活虚拟环境

source是linux的读取命令,读取一个脚本文件,激活虚拟环境

source /opt/allenv/venv1/bin/activate
参数解释 : --no-site-packages 不要任何的第三方包
--python 是指定一个解释器 我们选的是python3
venv1 是虚拟环境文件夹的名字 ,自定义

4 虚拟环境使用原理是 ,修改了PATH变量,根据pATH的优先级,使用解释器 pip3 list 干净的
5 激活虚拟环境,在venv1下创建django1.11.9项目
6 激活虚拟环境,在venv2 下创建虚拟环境
创建django2
which pip3
pip3 list

7.退出虚拟环境的命令 deactivate

确保开发环境的一致性
通过命令保证环境的一致性(将window中解释器的模块,导出一个),导出当前python环境包
1 在windows中导出所有的模块信息
pip3 freeze > requirements.txt

2 将此文件,发送给linux服务器,可选lrzsz 或scp

3 在linux中安装即可 pip3 install -i https://pypi.douban.com/simple -r requirements.txt

window中也创建了虚拟环境,并且模块都在虚拟环境下

想要导出这个虚拟环境中的模块,给linxu

问题: window中也创建了虚拟环境,并且都在虚拟环境

步骤:
1.第一步,在windows中激活虚拟环境,在虚拟环境下
pip3 freeze >  requirements.txt 

2.将次文件,发送给linux服务器,可选lrzsz 或scp 

3.在linux中安装即可
pip3 install -i https://pypi.douban.com/simple -r requirements.txt

virtualenvwrapper工具
1.安装工具
(注意要退出虚拟环境)
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper

2.配置用户个人变量配置文件,每次开机都加载这个virtualevnwrapper工具

系统变量配置文件

/etc/profile

个人用户变量配置文件,在用户家目录下找到这个~/.bash_profile文件,写入如下配置

vim ~/.bash_profile #打开文件,写入如下变量

export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python #指定python解释器
source /opt/python36/bin/virtualenvwrapper.sh #只有这一步,才是让这个工具生效的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

3.退出会话,重新登录,查看是否加载了virtualenvwrapper工具

4.工具创建后,使用命令管理
创建虚拟环境
mkvirtualenv django1
mkvirtualenv django2

workon 虚拟环境的名字(支持tab补全) #激活虚拟环境

lsvirtualenv #列出所有虚拟环境的目录

cdvirtualenv #进入已激活的虚拟环境的目录

cdsitepackages #进入虚拟环境下的第三方模块目录

原文地址:https://www.cnblogs.com/Doner/p/11106403.html