linux基础

linux基础系统优化

Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令。

netstat -tunlp 查看端口

  • ifconfig  查询、设置网卡和ip等参数

  • ifup,ifdown 脚本命令,更简单的方式启动关闭网络

  • ip  符合指令,直接修改上述功能

在我们刚装好linux的时候,需要用xshell进行远程连接,那就得获取ip地址,有时候网卡默认是没启动的,Linux也就拿不到ip地址,因此我们得手动启动网卡
#编辑网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
#修改配置参数
ONBOOT=yes

网卡配置文件详解

网络配置文件:
/etc/sysconfig/network

网络接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}: 引导协议;要使用静态地址,使用static或none;dhcp表示使用DHCP服务器获取地址;
IPADDR=: IP地址
NETMASK=:子网掩码
GATEWAY=:设定默认网关;
ONBOOT=:开机时是否自动激活此网络接口;
HWADDR=: 硬件地址,要与硬件中的地址保持一致;可省;
USERCTL={yes|no}: 是否允许普通用户控制此接口;
PEERDNS={yes|no}: 是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址;

 

ifup,ifdown命令

启动/关闭一块网卡
ifup eth0
ifdown eth0

ifconfig命令

ifconfig 查看网卡的ip地址
直接输入ifconfig会列出已经启动的网卡,也可以输入ifconfig eth0单独显示eth0的信息
各选项解释是:
eth0   网卡的代号
lo       回环地址loopback
inet   IPv4的Ip地址
netmask   子网掩码
broadcast   广播地址
RX/TX     流量发/收情况     tx是发送(transport),rx是接收(receive)
packets     数据包数
errors     数据包错误数
dropped   数据包有问题被丢弃的数量
collisions   数据包碰撞情况,数值太多代表网络状况差

ip命令

ip是一个命令,不是TCP/IP那个ip,这个ip命令是结合了ifconfig和route两个命令的功能。
ip addr show #查看ip信息
查看系统信息
#查看系统版本信息
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
#查看内核版本号
uname -r
3.10.0-693.el7.x86_64
#查看系统多少位
uname -m
x86_64
#查看内核所有信息
uname -a

用户管理与文件权限篇

创建普通用户

#添加用户
useradd oldboy
#设置密码
passwd oldboy 之后出现输入密码状态
passwd redhat

root用户可以修改其他所有人的密码,且不需要验证

切换用户(su)

su命令可以切换用户身份的需求,
su - username

su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息
#先看下当前用户(我是谁)
whoami
#切换用户
su - oldboy
#退出用户登录
logout
ctrl + d
  • 一般情况下,在生产环境避免直接用root用户,除非有特殊系统维护需求,使用完立刻退回普通用户

  • 非交互式设置密码(echo "redhat"|passwd --stdin oldboy && history -c)

Tip:
1.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁
2.普通用户切换root,需要输入密码
3.普通用户权限较小,只能基本查看信息
4.$符号是普通用户命令提示符,#是超级管理员的提示符
root是当前用户,oldboyedu是主机名,~代表当前路径,也是家目录

groupadd命令

group命令用于创建用户组,为了更加高效的指派系统中各个用户的权限,在工作中常常添加几个用户到一个组里面,这样可以针对一类用户安排权限。
例如超哥以前在公司里,就负责添加openLDAP用户管理,偶尔台湾,美国的同事去上海协作,我就得给他们添加到it部门组里面,以至于他们有对服务器操作的权限。
groupadd it_dep

userdel删除用户

-f     强制删除用户
-r   同事删除用户以及家目录
userdel -r pyyu

sudo命令(用户提权命令)

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

sudo 【选项】【参数】
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

 

配置sudo必须编辑/etc/sudoers文件,并且只有root才能修改,咱们可以通过visudo命令直接编辑sudoers文件,使用这个命令还可以检查语法,比直接编辑 vim /etc/sudoers更安全

visudo 编辑sudoers文件

写入
## Allow root to run any commands anywhere
root   ALL=(ALL)       ALL
chaoge ALL=(ALL)       ALL   #允许chaoge在任何地方,执行任何命令
此时切换chaoge用户
#su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
su - chaoge
已经可以使用sudo ls /root 命令

软连接

ln -s  文件路径  创建类似快捷方式的东西

 

文件与目录权限

Linux权限的目的是(保护账户的资料)

Linux权限主要依据三种身份来决定:

  • user/owner 文件使用者,文件属于哪个用户

  • group 属组,文件属于哪个组

  • others 既不是user,也不再group,就是other,其他人

什么是权限

在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。

对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录

Linux权限的观察

使用一条命令查看权限

ls -l /var/log/mysqld.log 

img

解读上图:

权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
文件链接数
文件拥有者-属主
文件拥有组-属组
文件大小
最后一次被修改的时间日期
文件名
文件的类型
-    一般文件
d   文件夹
l   软连接(快捷方式)
b   块设备,存储媒体文件为主
c   代表键盘,鼠标等设备

文件权限

r    read可读,可以用cat等命令查看
w   write写入,可以编辑或者删除这个文件
x   executable   可以执行

目录权限

权限这里测试不要用root实验!!!!root太牛逼了

请用普通用户执行!!!!!测试文件、文件夹权限操作,请用普通用户!

r    可以对此目录执行ls列出所有文件
w   可以在这个目录创建文件
x   可以cd进入这个目录,或者查看详细信息

权限与数字的转化

img

ls -l /var/log/mysqld.log 
-rw-r--r-- 1 mysql mysql 6735642 8月 11 14:19 /var/log/mysqld.log
这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。

查看用户权限命令

id指令查看用户所属的群主
[root@oldboy_python ~ 16:34:52]#id root
uid=0(root) gid=0(root) 组=0(root)

修改文件权限属性

普通用户只能修改自己的文件名,时间与权限(注意)
因此修改其他用户权限,只能用最nb的root用户

先切换root用户
chown 修改属主为root   chown root puyu.txt

查看信息
ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt

修改属组
chgrp
chgrp root pyyu.txt

文件权限

我们已知三种身份权限(属主,属组,其他人),每种身份都有rwx的三种权限,系统还提供了数字计算权限。

r   read         4
w   write       2
x   execute     1

每种身份最低是0分,最高是r+w+x 7分

因此三种身份,最高权限是777,最低是000

-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
因此可知pyyu.txt的权限是
属主是6 r+w(4+2)
属组是6 r+w(4+2)
其他人是4 r(4)

 

修改权限的命令

chmod命令(Change Mode chown 改变方式)

chmod [身份]   [参数]   [文件]
    u(user)   +(添加)  
    g(group)   -(减去)
    o(other)  =(赋值)
    a(all)
    
举例:
当前权限
-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
方法1
减去属主的写权限
chmod u-w pyyu.txt
查看权限
-r--rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt

方法2
属主添加可读可写可执行权限
chmod 700 pyyu.txt

属主可读可写可执行
属组可读可执行
其他人可读可执行
chmod 755 pyyu.txt

软连接

ln -s  目标文件  软连接名

例子:
1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 1015 21:23 test.txt

2./home目录中建立软连接,指向/tmp/test.txt文件
ln -s /imp/test.txt  my_test
#能否在my_test前面添加路径????要添加路径前后的路径属性是一样的
#如果是绝对路径都是绝对路径,是相对路径都是相对路径

3.查看软连接信息
lrwxrwxrwx 1 root root 13 1015 21:35 my_test -> /tmp/test.txt

4.通过软连接查看文件
cat my_test

my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,但是删除了本尊,
快捷方式就无意义不存在了

PS1变量

linux命令提示符由PS1环境变量控制

查看PS1环境变量
[root@bogon 1]# echo $PS1
[\u@\h \W]\$

可以自行调整全局变量/etc/profile文件用于永久生效 PS1='[\u@\h \W\t]\$'
\d  日期
\H  完整主机名
\h  主机名第一个名字
\t  时间24小时制HHMMSS
\T  时间12小时制
\A  时间24小时制HHMM
\u  当前用户账号名
\v  BASH的版本
\w  完整工作目录
\W  利用basename取得工作目录名
\#  下达的第几个命令
\$  提示字符,root为#,普通用户为$
PS1 > 变量名
$PS1 > 查看变量内容
PS1=新内容 重新赋值

变量赋值,查看
name='chaoge'
echo $name

PS1显示ip地址
export PS1="[\u@\h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` \w]\$"

netstat命令

用来打印linux网络系统的状态信息,可以让你得知linux系统的网络情况

netstat -tunlp 查看端口号

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

ps命令

ps命令用于查看系统中的进程状态,语法 ps 参数

ps  命令常用参数
-a     显示所有终端机下执行的程序,除了阶段作业领导者之外。
-A:显示所有程序。
-u     用户以及其他详细信息
-x    显示没有控制终端的进程
-e:此选项的效果和指定"A"选项相同。
-f:显示UID,PPIP,C与STIME栏位。

kill命令

kill命令用来删除执行中的程序或工作,kill可将指定的信息送到程序

选项
-a:当处理当前进程时,不限制命令名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。

#只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:

HUP     1    终端断线
INT     2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \
TERM   15    终止
KILL    9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP   19    暂停(同 Ctrl + Z)

killall

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这 些进程会比较麻烦,此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。

例如nginx启动后有2个进程
killall nginx

pkill

pkill命令**可以按照进程名杀死进程。pkill和[killall](http://man.linuxde.net/killall)应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用[kill](http://man.linuxde.net/kill)来杀掉。

 

iptables防火墙

在学习阶段,关闭防火墙可以更方便的学习,在企业环境中,一般只有配置外网ip的linux服务器才会开启防火墙,但是对于高并发流量的业务服务器仍然是不能开启的,会有很大性能损失,因此需要更nb的硬件防火墙。

iptables -F 清空防火墙规则

centos7默认已经使用firewall作为防火墙了
1.关闭防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld   #关闭防火墙
systemctl disable firewalld#关闭防火墙开机启动
systemctl is-enabled firewalld.service#检查防火墙是否启动

Linux中文显示设置(防止中文乱码)

此项优化为可选项,根据个人情况选择是否调整Linux系统的字符集,字符集就是一套文字符号以及编码。
Linux下常用字符集有:
GBK  实际企业应用较少
UTF-8  广泛支持,MYSQL也使用UTF-8,企业广泛使用

查看系统当前字符集
echo $LANG
#检查xshell crt的字符集
locale
#查看系统语言变量
#同样可以在/etc/profile 中修改字符集


#中文字符集
export LC_CTYPE=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
#英文字符集
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

df命令(disk free)

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法
df(选项)(参数)
-h或--human-readable:以可读性较高的方式来显示信息;
-k或--kilobytes:指定区块大小为1024字节;
-T或--print-type:显示文件系统的类型;
--help:显示帮助;
--version:显示版本信息。

示例
查看系统磁盘设备,默认是KB为单位:
df
使用-h选项以KB以上的单位来显示,可读性高:
df -h

tree命令

yum -y install tree  下载安装tree

 

#tree命令以树状图列出目录的内容
-a:显示所有文件和目录;
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C:在文件和目录清单加上色彩,便于区分各种类型;
-d:先是目录名称而非内容;
-D:列出文件或目录的更改时间;
-f:在每个文件或目录之前,显示完整的相对路径名称;
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*""/""@""|"号;
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称;
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n:不在文件和目录清单加上色彩;
-N:直接列出文件和目录名称,包括控制字符;
-p:列出权限标示;
-P:<范本样式> 只显示符合范本样式的文件和目录名称;
-q:用“?”号取代控制字符,列出文件和目录名称;
-s:列出文件和目录大小;
-t:用文件和目录的更改时间排序;
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。

设置主机名命令


[root@yugo /tmp 11:04:42]#hostnamectl set-hostname pyyuc
[root@pyyuc ~ 11:05:12]#hostname
pyyuc

DNS定义

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。

查看Linux的dns,唯一配置文件

配置文件
cat /etc/resolv.conf
#dns服务器地址
nameserver 119.29.29.29
nameserver 223.5.5.5

dns :
阿里巴巴: 223.5.5.5   223.6.6.6
腾讯的dns:119.29.29.29
谷歌的dns:8.8.8.8
114的dns:114.114.114.114

本地强制dns解析文件/etc/hosts

指定本地解析:
/etc/hosts
主机IP    主机名    主机别名
127.0.0.1        www.pyyuc.cn        

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

 

nslookup命令(dns)

nslookup命令是常用域名查询工具,就是查DNS信息用的命令。

nslookup4有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。或者输入nslookup -nameserver/ip。进入非交互模式,就直接输入nslookup 域名就可以了。

#解析
nslookup www.oldboyedu.com

添加一个dns服务器记录

/etc/resolv.conf  写入一个参数
nameserver dns 服务器地址  
nameserver dns服务器地址2

 

计划任务crond服务

后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了crond服务

crontab (选项)(参数)
-e:编辑该用户的计时器设置;
#可以设置计时器
-l:列出该用户的计时器设置;
#显示用户是否设置了计时器,或者设置了几个计时器
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。



#存放定时任务的文件
/var/spool/cron

crontab配置文件

crontab任务配置基本格式:
* *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
30 08 * * * 每天8.30去上班  
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com 每隔三分钟执行下时间同步

 

分  时  日  月  周   你要执行的命令的绝对路径

举例:
#每分钟执行一次命令
* * * * *   命令绝对路径

#每小时的3,15分组执行命令
分   时   日 月 周   你要执行的命令的绝对路径
*     *   *   *   *  

#每小时的整点执行命令
0   *   *   *   *

#在上午8-11点的第3和第15分钟执行
分   时   日 月 周   你要执行的命令的绝对路径
*     *   *   *   *
3,15 8-11 * * *  

#每晚21:30执行命令
分   时   日 月 周   你要执行的命令的绝对路径
*     *   *   *   *
30   21   * * *  

#每周六、日的下午1:30执行命令
分   时     日 月 周   你要执行的命令的绝对路径
*     *   *   *   *
30   13   *   * 6,0  

#每晚的21:30重启nginx

30 21 * * * /usr/bin/systemctl restart nginx

crontab执行定时任务控制前一个任务完成后再 执行下一个任务

有一个定时任务,每分钟执行一次,前一分钟还没有执行完成,下一个分钟就来了,怎么解决。 
#!/bin/bash

echo "开始 `date` " >> /lile/shell/ll.txt
sleep 70
echo "结束 `date` " >> /lile/shell/ll.txt
*/1 * * * * /bin/sh /lile/shell/test_cron.sh

输出结果:不是一个执行完,再执行下一个的结果

解决办法

使用文件锁flock,使用文件锁的文件可以是任意文件

*/1 * * * * flock -xn /lile/shell/test_cron.sock -c '/bin/sh /lile/shell/test_cron.sh'

输出结果

这样的话,当前一个任务没有执行完,后一个任务就来了的话,是不会执行的,会直到这个任务执行完成后,然后一个周期的时候再执行

flock常用参数(man flock)

-s:获取一个共享锁
-x :获得一个独占锁
-u:解除锁
-n:如果获取锁失败立即返回而不是等待
-w:如果获取锁失败等待的时间
-c:在shell中允许一个命令

 

软件包管理

软件包是什么
#类似软件开发规范
程序(软件)组成部分:
   二进制程序  可执行命令
   库     .so文件
   配置文件   .conf
   帮助文件    readme    /usr/share/man
   
rpm管理软件,得手动处理依赖关系,不使用!!!
yum install  #推荐使用!!!<自动处理依赖关系
源代码编译安装,获取软件源代码,手动编译安装(可以只有扩展软件功能,选择最新的软件)

yum工具是红帽子才有的软件管理工具,例如suse乌班图等系统,没有yum,apt-get apt-install  
#linux的yum仓库目录是:
cd /etc/yum.repos.d/   这个目录下,第一层中,所有以.repo结尾的文件,都会识别为一个yum仓库
(这个仓库就是一个url),url中提供了各种rpm包的下载,yum工具会去查找

配置阿里云的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 下载到指定目录,且改名


4.配置额外的第三方仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

5.可以测试yum工具安装一个nginx
yum install nginx  -y  

6.启动nginx测试访问
systemctl start nginx

yum命令

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 软件包组   安装软件包组

系统服务管理命令

centos7用systemctl 管理服务
例如:
systemctl start/stop/reload/restart/ nginx

systemctl enable nginx #设置nginx开机自启
systemctl disable nginx #禁止nginx开机自启

systemctl stop firewalld #临时关闭防火墙服务
systemctl disable firewalld #永久关闭开机自启

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

python虚拟环境工具的安装

#(注意,你的PATH变量,编译安装的python3一定要放在最前面)

1.下载虚拟环境工具(这里是在物理环境下安装的)
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

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

4.虚拟环境使用原理是,修改了PATH变量,根据pATH的优先级,使用解释器

5.激活虚拟环境,在venv1下创建django1.11.9项目

6.再开一个窗口,创建venv2,用于创建django2的项目

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

解决python的环境一致性问题,(将windows中解释器的模块,导出到一个文件,然后发送给linux一个新的虚拟环境安装即可)


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 ~/.bashrc #打开文件,写入如下变量

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 #只有这一步,才是让这个工具生效的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

source ~/.bashrc
读取文件,使得生效,此时已经可以使用virtalenvwrapper

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


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

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

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

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

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

ps命令

ps 命令用于查看系统中的进程状态,格式为“ps [参数]”。

ps  命令常用参数
-a     显示所有进程
-u     用户以及其他详细信息
-x   显示没有控制终端的进程

curl 发送http请求 +ip端口

iptables -F 清空防火墙规则

deative退出到物理环境

systemctl stop firewalld 关闭防火墙

kill 进程号pid 

-9参数

pkill vim 批量杀死进程

ps -ef 查看进程

host文件,强制解析,

dns解析流程

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

linux的yum仓库目录

/etc/yum.repos.d/

 

posted @ 2019-11-26 19:41  百鬼之主  阅读(267)  评论(0编辑  收藏  举报