source和/bin/bash的区别
通过/bin/bash filename
执行脚本,会生成一个子shell,该子shell会继承当前父shell(可以理解成当前的shell)的环境变量,但子shell中新建的、改变的变量不会被带回父shell,除非使用export。
source filename
命令只是简单地读取脚本里面的语句依次在当前shell里面执行,并没有建立新的子shell,脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
通过/bin/bash filename
执行脚本,会生成一个子shell,该子shell会继承当前父shell(可以理解成当前的shell)的环境变量,但子shell中新建的、改变的变量不会被带回父shell,除非使用export。
source filename
命令只是简单地读取脚本里面的语句依次在当前shell里面执行,并没有建立新的子shell,脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
我们都知道,通过mysqldump
命令可以将数据库导出,该命令还包含了很多选项,比如忽略表、导出所有(指定)数据库、添加drop语句等,至于具体使用方法,大家可以自行百度。
现在,需要把数据库db1
中所有表通过python脚本的方式全部导入到数据库db2
中,具体命令如下:
# 先导出,不包含 USE db1 类似的语句,下面USER和PASS请自行替换
subprocess.call('mysqldump -h localhost -uUSER -pPASS db1 --no-create-db > /home/db1.sql', shell=True)
# 导入到 db2 中
subprocess.call('mysql -h localhost -uUSER -pPASS db2 < /home/db1.sql', shell=True)
命令一中,PASS
后面直接带上数据库名,避免导出的sql文件中包含USE db1
这样的语句,否则导入的时候会自动切换成db1
,而不是我们希望的db2
。同理,命令二中PASS
后面直接带上db2
,表示登录后直接使用db2
,不需要使用USE db2
来指定数据库了,所以数据能够成功导入。
管理多个站点列表的时候,由于很多站点都绑定了多个域名,以前想要查看每个网址的连通性,就需要复制网址到浏览器中打开,为了方便快捷判断,现通过Python的requests模块,对网址进行访问,通过返回的状态大致判定所给链接是否可以正常访问。代码如下:
#-*- coding:utf-8 -*-
import requests
url = "http://www.example.com/"
headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55"}
try:
response= requests.get(url, headers=headers, timeout=5).status_code
print(response)
if response == 200:
print('可打开')
else:
print(response)
except Exception as e:
print(e)
随着网络的发展,IPv4逐渐枯竭,IPv6随之诞生。但因为各种原因,IPv6始终没能全面普及。我们国家这几年在花大力气进行IPv6的普及工作,而且已经取得了不错的成效。那么怎样才能知道一个域名有没有解析IPv6的地址呢?
如果是通过命令的话,使用ping
可以知道IPv4地址,使用ping6
命令可以查出IPv6地址。
如果是通过Python脚本,则需要使用如下方法:
# 获取IPv4地址
ip = socket.gethostbyname("www.baidu.com")
# 获取IPv6地址,getaddrinfo结果返回的是元组
ip = socket.getaddrinfo(str(url), None, socket.AF_INET6)[0][4][0]
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。
希尔排序是把数据按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
希尔排序是一种不稳定的排序方法,时间复杂度为:O(n^(1.3—2))。
# -*- coding:utf-8 -*-
# 希尔排序
def shell_sort(list):
n = len(list)
step = n // 2
while step > 0: # 最后的步长为1,此时就是一个标准的插入排序
for cur in range(step, n):
i = cur
while i >= step and list[i-step] > list[i]:
list[i - step], list[i] = list[i], list[i-step]
i -= step
step = step // 2
return list
list = [54, 26, 93, 17, 77, 3, 31, 44, 55, 20]
print(shell_sort(list))