www.yzc577.comlinux系统用什么做备份比较好?

( www.yzc577.com )

windows可以用ghost,那么linux用什么好呢?

rsync+btrfs+dm-crypt 备份整个系统 – 依云s Blog。

其实建议文件系统使用支持快照的,比如 zfs 或者 btrfs(也可以用 LVM 这样的解决方案),不然在线备份的话还是有可能会有一致性问题(比如 PostgreSQL 文档明确地说了,如果不使用快照的方式的话,它不保证你的备份是可用的)。

直接rsync相应目录

你可以尝试制作镜像

工业级备份,请自己写程序,来实现至少以下几个功能:

1.数据复制,支持本地复制与网络复制。

2.数据校验。

很多人以为备份只是复制,没有校验,最后出各种问题。

dd到文件;完了…

用tar备份/还原Linux

备份系统可以在运行时备份:
sudo su
cd /
tar pczf bak.tgz 
--exclude=/bak.tgz 
--exclude=/cdrom 
--exclude=/dev 
--exclude=/lost+found 
--exclude=/media 
--exclude=/mnt 
--exclude=/proc 
--exclude=/run 
--exclude=/sys 
--exclude=/tmp 
/
其中--exclude的作用是排除.

还原系统建议在启动U盘LiveCD下还原:
sudo su
tar pxzf bak.tgz -C /
mkdir cdrom dev lost+found media mnt proc run sys tmp
参数p表明保留原文件的属性属性不会依据使用者而变

用dd备份/还原MBR

备份MBR:
dd if=/dev/sda of=/tmp/mbr bs=512 count=1
恢复MBR:
dd if=/tmp/mbr of=/dev/sda bs=512 count=1

rsync -aAXv /* /path/to/save/backup --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/path/to/backup/*}

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

www.yzc577.com为什么linux中.text 虚拟内存段不是从0起始的?

( www.yzc577.com )

另外,为什么.text段对于32bit/64bit体系分别起始于0x08048000/0x00400000, 关于这个确定数值的取值有什么决定因素?

据我所知,这个数字没什么特殊含义,这个数值就是大佬们拍脑袋定的。
文档里说:虚拟内存不从0开始是为了可以预留一个足够大的read only堆,每个程序都可以在这里建立单独的2级页表。一个2级页表是0x00400000

From the Linkers and loaders book:

On 386 systems, the text base address is 0x08048000, which permits a reasonably large stack below the text while still staying above address 0x08000000, permitting most programs to use a single second-level page table. Recall that on the 386, each second-level table maps 0x00400000 addresses.

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

www.yzc577.com为何redis的TIME_WAIT值如此之高

( www.yzc577.com )

我用的是redis的pecl客户端,在代码里使用的是connect函数,并且每次请求都手动关闭了连接。但最近iammutex的一个回答提醒了我关注下系统的连接数,于是我在晚上访问量比较小的时候看到如下让我吃惊的结果

netstat -na | grep 6379 | grep TIME_WAIT | wc -l
446

在redis端口上居然有446个TIME_WAIT。我不知道这种情况是否算正常呢?如果不正常,应该优化哪些参数?

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

原理:redis的客户端close一个链接以后,这个链接就会进入TIME_WAIT状态,而TIME_WAIT状态的链接会在Max Segment Lifetime内都没有活跃包的情况下关掉。Linux这个默认值貌似很长,具体的数值还真不知道,似乎是分钟级的。。。
悲剧的是,一条TCP链接是死是活由源IP和端口,目标IP和端口四个变量决定。那客户端和服务器的这四个值都是固定的,所以每次建立新链接的同时,处在TIME_WAIT的链接也被告知,你还不能死。
所以执行上述命令,让tw状态的链接可以reuse

补充:/proc/sys/net/ipv4/tcp_tw_recycle 如果设成1的话,就是快速回收tw链接,应该也能解决问题

几百应该不算高,手动close连接是说向Redis发送QUIT命令吗?如果是的话,由于发送了QUIT命令后,Redis会主动断开连接,TCP中主动断开的一方确实会保持TIME_WAIT一段时间。其实几百个不是什么大问题,TW状态也不会占用太多资源。
对于防止TW过多,@gaosboy 说到了一点reuse,一般可以设置下面几个TCP参数来进行TCP连接的优化。

vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
/sbin/sysctl -p //使之生效

不过我个人觉得SF慢的原因真的需要细查一下。网络连接上确实没有任何问题的。而目前打开页面至于是2s以上,平均是3s多。如果优化优化,速度提升个十倍以上应该不是问题。

请点击此问题进行查看http://sfau.lt/eHhgZN,可以解决你的问题了。

UP:原因一样:

connect之后没主动关闭

详细参见文档说明

connect, open

Description

Connects to a Redis instance.

Parameters

host: string. can be a host, or the path to a unix domain socket

port: int, optional

timeout: float, value in seconds optional,
default is 0 meaning unlimited

请不要手动修改收回连接的超时时间, 操作系统设计这个超时是因为 客户端与服务器之间的传有可能有延时, 还有就是端口重用的问题. 所以最好用单例实现一个或多个连接或使用连接池.

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

yzc577亚洲城娱乐eclipse cdt linux 标准模版库的代码提示和跳转都用不了了

( yzc577亚洲城娱乐 )

最近装了linuxmint下的eclipse cdt比如有这样一段代码

#include<iostream>
#include<string>
using namespace std;
int main
{
	string s="Who is your daddy?";
	int a=s.length;
	cout<<a<<endl;
}

在windows下的eclipse-cdt和我以前装的linux下的eclipse-cdt
在s.后面用Alt+/都可以显示出stl中的成员函数,对着s.length ctrl+单机可以跳转到相应的头文件中.但是现在不行了,没有成员函数提示,而且ctrl+单机会有的提示3.6和3.7版本都不行,不知道是不是linuxmint这个系统有什么特别的

我只知道用eclipse官方的eclipse-cdt版本可行

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

www.yzc577.com如何在Linux下查看所有的自定义变量呢?

( www.yzc577.com )

使用set命令会显示出所有的变量,如何只显示自己定义的变量呢(例如我忘了我定义了那些变量),求指导。

就我知道的,没有其他办法,只能通过set/env/export命令查看。况且,自定义变量时位置通常是固定的,都是在profile.d/里面。

如果是bash那就没办法,你先查看当前环境中的所有环境变量

env

再查看所有变量

set

两个的差集就是自定义变量。

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

yzc577亚洲城娱乐apache泛解析跳转

( yzc577亚洲城娱乐 )

需求如下:

现状

现有域名a.com、www.a.com、m.a.com。
www.a.com已经指定web目录为/apps/www/a.com/httpd.conf指定DocumentRoot
访问a.com时使用rewrite跳转到www.a.com,.htaccess配置
访问m.a.com时实际访问/apps/www/a.com/m/目录 httpd.conf指定DocumentRoot

需求

依据业务需求,域名设置为泛解析。
域名设置泛解析后,所有非a.com,www.a.com,m.a.com的请求,全部跳转到http://www.a.com/directory/,
并且不能影响a.com,www.a.com,m.a.com的访问。

服务器使用Apache2.4,OS为Centos7.2.1511

希望各位帮忙解决一下,十分感谢!

www.a.com和m.a.com配置如下

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/apps/www/a.com/"
    DirectoryIndex index.php
    <Directory "/apps/www/a.com/">
        Options ExecCGI FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ServerName www.a.com
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/apps/www/a.com/m/"
    DirectoryIndex index.php
    <Directory "/apps/www/a.com/m/">
        Options ExecCGI FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ServerName m.a.com
</VirtualHost>

a.com Rewrite规则如下

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^a.com [NC]
RewriteRule ^.*$ http://www.a.com/$1 [L,R=301]

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐如何在linux中查找指定列表中的文件

( yzc577亚洲城娱乐 )

比如一个txt文件中包含

./1.php
./2.php
./3.php
./a/1.php
./a/2.php
./b/1.php
...
...

txt文件中包含这些文件路径,如何利用linux查找出这些文件
用find -name *.php 查找的是所有的php文件 我想要的是txt中指定文件的

awk可以实现,具体请百度查一下

使用awk和find命令实现,不知道是不是你需要的答案,命令如下:

[root@ZTEST-163 test]# cat t.txt 
class.py
[root@ZTEST-163 test]# awk  -F / {print $NF} t.txt | sort | uniq | xargs -i find / -name {}
/root/dyp/test/class.py
/home/dyp/test/py/class.py

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

www.yzc577.com流量是怎么匹配宽带速度的?我突然想到的一个问题

( www.yzc577.com )

比如A从B下载一个2G的电影,A的下载带宽是200KB,服务器的上传带宽是400kb,比如A的完整下载速度可能是1小时,B的完整上传时间可能是0.5小时,那如果没有智能的匹配,服务器早应该在30分钟的时候就上传完毕了,而客户端还要持续30分钟的下载,显然事实不是这样,传输会以最小的带宽为瓶颈,这之间到底怎么匹配的?这是怎么实现的?如果是水流的话很好理解,反正从大管到小管之间的接口决定了最终速度,那电脑线路是怎么搞的?接口会反馈服务器最高速度?接口会反馈客户端最高速度?

你这标签不对,这是TCP层的问题。

而且这个问题不是一篇文章两篇文章就能讲清楚的。TCP滑动窗口、重传、RTT、令牌,以及为了人为处理一些问题,还会引入更多的概念:netfilter、4层负载均衡、7层负载均衡,Qos……

你想TCP一个刚有网络时就存在到现在的协议,得有多深奥。

如果真心想了解这方面的知识,建议找一些TCP和网络传输相关的书籍来看。

同意楼上的观点,这也是TCP设计的目的所在。建议查看《TCP/IP详解:卷一》流量控制方面,这是主要是一个传输层的问题。如果使用数据链路层使用PPP协议也自带部分流量控制功能。

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

yzc577亚洲城亚洲娱乐第一站python -mysqldb 查询和插入问题

( yzc577亚洲城亚洲娱乐第一站 )

1.系统环境:
python 2.7

2.在使用MySQLdb模块的时候发现:
db=MySQLdb.connecthost=“localhost”,user=“root”,passwd=“123456”,db=“student”,charset=”utf8″
cursor=db.cursor
sql=”select * from student”
cursor.executesql
results=cursor.fetchmany5
fi=open”/tmp/python-save”,wb
for i in results:

Str=i.__str__
fi.writeStr

fi.close

但是在获取的内容中出现
946936L, 1333L, uG-001-001B, u622909326808922712, u*xe7u0178xb3xe6u02dcu017dxe6xb5xb7, 141301594L, 0.0, 4800.0, u020000009669, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 100.0, datetime.datetime2016, 6, 20, 14, 41, 41, datetime.datetime2016, 6, 21, 10, 13, 4, 2762L, 0L, 0L, None, 1613258L, datetime.date2016, 7, 3, 1

有两个问题:

1.获取内容中的u*xe7u0178xb3xe6u02dcu017dxe6xb5xb7 为什么不显示中文,已经尝试了很多次,将编码该加的都加了,(encoding,python环境,数据库编码),有什么办法可以解决的吗?

2.想将上面的一条语句再次插入到原表中(在插入之前,原表中的原数据已经被删除,不会出现主键报错,不让插入该语句的情况)
直接插入上面的语句肯定是不行的(数据中存在字段的类型),有什么办法将上面的语句转换成可以直接插入的语句吗。(不要一个一个的赋值)

谢谢!

results:
946936L, 1333L, uG-001-001B, u622909326808922712, uxe7u0178xb3xe6u02dcu017dxe6xb5xb7, 141301594L, 0.0, 4800.0, u020000009669, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 100.0, datetime.datetime2016, 6, 20, 14, 41, 41, datetime.datetime2016, 6, 21, 10, 13, 4, 2762L, 0L, 0L, None, 1613258L, datetime.date2016, 7, 3, 1, 946938L, 1155L, uG-001-005, u966666323355759717, uxe5xbcxa0xe5xadxa6, 132001643L, 0.38, 2880.0, u020000020580, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 99.62, datetime.datetime2016, 6, 20, 15, 25, 38, datetime.datetime2016, 6, 21, 10, 13, 5, 2762L, 20212L, 2L, None, 1613272L, datetime.date2016, 7, 13, 1, 946940L, 1134L, uJ-002-012, u966666323504681316, uxe6x9du017dxe6u02dcxa5xe5x8du017d, 131300758L, 12.16, 6187.0, u020000020582, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 3187.84, datetime.datetime2016, 6, 20, 15, 35, 26, datetime.datetime2016, 6, 21, 10, 13, 5, 2762L, 19937L, 2L, None, 1613276L, datetime.date2016, 7, 13, 1, 946942L, 1151L, uS-002-003, u622909326232874711, uxe5xadu2122xe6xb5xb7xe6xbax90, 131600574L, 11.32, 3278.0, u020000020583, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 2968.68, datetime.datetime2016, 6, 20, 15, 38, 26, datetime.datetime2016, 6, 21, 10, 13, 5, 2762L, 20036L, 2L, None, 1613278L, datetime.date2016, 6, 26, 1, 946946L, 1353L, uG-001-001, u966666323782153913, u*xe5x8fxb6xe5u0153xa3xe6u2030x8d, 141801664L, 0.0, 7360.0, u020000020587, Decimal1.00, 1, 0.0, 0.0, 0.0, 0.0, 100.0, datetime.datetime2016, 6, 20, 16, 28, 24, datetime.datetime2016, 6, 21, 10, 13, 5, 2762L, 0L, 0L, None, 1613290L, datetime.date2016, 7, 2, 1

贴一下print results的输出结果。ps: 写入文件的时候没必要”wb”吧。

(看完/读完)这篇文章有何感想! yzc577亚洲城亚洲娱乐第一站的分享…

yzc577亚洲城亚洲娱乐第一站何如做动态定时任务?

( yzc577亚洲城亚洲娱乐第一站 )

做一个定时任务处理数据,每次处理10个,如果处理的太多就会出现问题
怎么做动态定时任务,查询待处理数据条数,如果大于10个,定时下一分钟执行,依次循环

以前用redis+python搞过类似的东东,这个思路redis+PHP也可以做。其实很简单:

  1. 首先要有个redis服务器

  2. 假设一个任务队列就叫job_queue,类型使用list

  3. 起一个PHP脚本定时往里面加任务,比如$redis->lpushjob_queue, "xxx"; ,数据建议序列化为JSON字符串

  4. 起10个PHP脚本来执行任务,可以采用会阻塞blpop来取任务并执行:dealYourJob$redis->blpopjob_queue; — 注意反序列化数据

O了

至于【3】中的如何定时,既然你是用linux,建议直接用系统的crontab即可。
【4】中的脚本想并行多少个随时都可以增加或减少。

除了redis外,MySQL也可以用来搞这个队列,就是SQL语句写起来麻烦些。

redis本身是单线程的,lpushblpop都能保证原子性,比用MySQL要省心。

sleep等待?

求大神告知怎么做或指明其他第三方

页面一加载就触发一个js方法,这个方法里面用ajax请求处理的那个后台方法,再用js定时器http://jun1986.iteye.com/blog…这是定时器的用法

如果单纯用PHP做,只能说PHP本身不擅长做这种事。不像JAVA在虚拟机里面开多几个线程就能解决。
如果没有接触过计划任务,可以尝试一下,linux的crontab。
另外要是根据不同的返回数量来决定不同的操作间隔,可以用计划任务+缓存来实现。

希望对你有帮助!

用linux的crontab

0.先看看下面的链接

linux定时运行命令脚本——crontab

1.vi /etc/crontab

*/1 * * * * root php yourPhpFile.php 

2.每一分钟yourPhpFile.php脚本就会去查询并处理你的任务

总结:此处的crontab任务每一分钟执行一次,只是提供下大概思想所以不够高效,题主可以安排和设置出更为合理的定时任务

希望对你有所帮助

你可以在程序里面设计好对应的规则逻辑。然后通过crontab命令执行。参考

(看完/读完)这篇文章有何感想! yzc577亚洲城亚洲娱乐第一站的分享…