Press "Enter" to skip to content

Category: Linux运维

Linux,unix,mysql,database,oracle,mysql

CentOS 6安装mock

最近工作中需要用到mock,这里介绍两种安装方式。本文的环境为CentOS 6.4 x86_64。

一,使用yum安装mock

安装第三方yum源RPMForge

Centos5 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
Centos5 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
Centos6 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Centos6 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

安装下载回来的rpm包

yum install rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

安装mock

yum install mock
Leave a Comment

Linux构造chroot环境

关于chroot的简介,可以参考IBM开发者网站上的这篇理解chroot,本文演示了如何构造一个最简单的chroot环境,本文实验环境为CentOS 6.4 64bit。

[root@os ~]# dd if=/dev/zero of=123.img count=512K bs=20480
[root@os ~]# /sbin/mkfs.ext3 123.img  
#格式化为ext3时可能会提示123.img is not a block special device.不用管它,直接按y继续
[root@os ~]# mkdir /mnt/123
[root@os ~]# mount -o loop 123.img /mnt/123
[root@os ~]# chroot /mnt/123
chroot: failed to run command `/bin/bash': No such file or directory

发生了错误,看来chroot环境不存在/bin/bash(事实也的确不存在),那我们从真实系统里拷贝一个过去吧:)

[root@os ~]# mkdir /mnt/123/bin
[root@os ~]# cp -av /bin/bash /mnt/123/bin/bash
[root@os ~]# chroot /mnt/123
chroot: failed to run command `/bin/bash': No such file or directory

错误依旧,原因是因为/bin/bash需要调用相关的库,因新环境不存在相关的库文件,因此bash不能运行,从而报上述错误,解决方法是利用ldd /bin/bash查找到其所需要的运行库

1 Comment

Linux rpmbuild简单介绍

本博客先前介绍过如何解压rpm包,演示了将.rpm包还原成源代码的形式。rpmbuild则是用来将源代码打包成.rpm格式的工具。

xxx.rpm 指普通的软件包,执行rpm -ivh xxx.rpm以后即是完成了安装;
xxx.src.rpm 指的是包含源代码的软件包,执行rpm -ivh xxx.src.rpm以后,并不是安装了该软件,而是在/root目录下生成一个名为rpmbuild的文件夹(RHEL5中在/usr/src),里面包含了此软件的所有源代码,还需要使用rpmbuild工具将源代码打包成.rpm或者.tar.gz格式的软件包,才能正常安装使用。

CentOS6 中安装rpmbuild:

yum install rpm-build

rpmbuild命令参数介绍
-bp 只作准备 (解压与打补丁)
-bc 准备并编译
-bi 编译并安装
-bl 检验文件是否齐全
-ba 编译后做成*.rpm和src.rpm
-bb 编译后做成*.rpm
-bs 只做成*.src.rpm
-tc -ti -ta -tb -ts 的功能类似,只是所需参数由spec文件变成tar包。

例如:

cd /usr/src/redhat/SPECS
rpmbuild -bp kernel-2.6.spec

更具体的用法说明:

Leave a Comment

LinuxVPS自动备份脚本(sftp版)

网络上大家都在使用的一个自动备份的脚本(原作者应该是猫言猫语),我自己也在用,经过无数次的使用后发现此脚本存在着一定的BUG(长期使用此脚本的朋友肯定知道BUG在哪里)。自己把脚本改了一下,加入了一些判断,使脚本更加智能化。

改进内容:
1,避免了忘记检查本机是否安装FTP软件导致备份失败的BUG;
2,避免了本机忘记创建/home/backup目录导致备份失败的BUG;
3,去掉了将数据库发送至邮箱的过程;
4,网站文件和数据库不再分开,将压缩至同一个压缩包内;

直接把以下脚本复制到/root/backup.sh

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_BIN=/usr/bin/mysql
MYSQL_DUMP=/usr/bin/mysqldump
MYSQL_USER=root                         #mysql用户名
MYSQL_PASS=zhukun.net                   #mysql密码
SFTP_USER=www.zhukun.net                #ftp用户名
SFTP_PASS=123456789                     #ftp密码
SFTP_IP=11.11.11.11                     #ftp地址
SFTP_backup=upload/www.zhukun.nert      #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/opt/apps/     #本地要备份的网站数据
#你要修改的地方从这里结束

#if [ ! -f /usr/bin/ftp ]; then
#    yum install ftp -y
#fi
if [ ! -f /usr/bin/lftp ]; then
    apt install lftp -y
fi
if [ ! -d /opt/backup ]; then
    mkdir /opt/backup
fi

#定义备份文件的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz

#删除本地3天前的数据
rm -rf /opt/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz
cd /opt/backup

#导出数据库,一个数据库一个压缩文件
for db in `$MYSQL_BIN -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
    ($MYSQL_DUMP -u$MYSQL_USER -p$MYSQL_PASS ${db} -q --skip-lock-tables | gzip -9 - > ${db}.sql.gz;
    echo dumped /home/backup/${db}.sql.gz)
done

#将导出的数据库和网站目录压缩为一个文件
tar zcf /opt/backup/$DataBakName $WEB_DATA /home/backup/*.sql.gz

#删除本地已导出的数据库
rm -rf /opt/backup/*.sql.gz

#上传到FTP空间,删除FTP空间5天前的数据
#ftp -v -n $FTP_IP << END
#user $FTP_USER $FTP_PASS
#type binary
#cd $FTP_backup
#delete $OldData
#put $DataBakName
#bye
#END

# 如果你使用的SFTP, 请使用此方法.
lftp -u "$SFTP_USER,$SFTP_PASS" sftp://$SFTP_IP -e "cd $SFTP_backup; put $DataBakName; delete $OldData; bye"
Leave a Comment

使用youtube-dl下载youtube视频

youtube-dl是一个使用python编写的脚本, 可以下载热门视频网站的视频. 在Linux系统下可以一健下载Youtube, Youku, Tudou等热门网站的视频, 甚至是一些XXX网站的视频下载, 如YouPorn, XVideos等. 下面介绍使用方法.

1. 安装python3.x版本

youtube-dl需要Python 2.6以上的版本. 请根据这篇文章更新Python版本.

2. 下载及使用

下载

python3 -m pip install --force-reinstall https://github.com/yt-dlp/yt-dlp/archive/master.tar.gz

使用方法

~/.local/bin/yt-dlp --list-extractors  # 查看支持网站列表

~/.local/bin/yt-dlp -h                 # 更多参数

yt-dlp -U                              #程序升级, 仅限于用binary安装的方式.

~/.local/bin/yt-dlp --get-format URL   # 获取视频格式

~/.local/bin/yt-dlp -F URL             # 获取所有视频格式
~/.local/bin/yt-dlp f ID URL           # 下载指定格式的视频,例如yt-dlp f 32 URL

# 推荐用法
~/.local/bin/yt-dlp --merge-output-format mp4 -f bestvideo+bestaudio URL

# 推荐用法2(先把视频和音频都下载回来,再手动merge)
~/.local/bin/yt-dlp -f bestvideo[ext=webm]+bestaudio[ext=m4a] URL
sudo ffmpeg -i 1.webm -i 1.m4a -c copy 1.mkv
2 Comments

Kagoya vps 1G方案测试

Kagoya是日本少数支付境外用户购买的VPS商家,基于OpenVZ技术。今天购买了Kagoya 1G方案(最低套餐)的VPS,价格为840日元,折合人民币56元左右。配置是3核、1G内存(Burst到2G),200G硬盘。以下是一些测试数据:

1,PING测试
全国范围有不同程度的掉包,甚至从美国、香港PING过去依然会掉包。看来线路的确很烂。

两张17CE测试图(点击可放大),测试时间为下午4点左右。
17ce测试

17ce测试

补充:晚上19:30再次测试了一下,北京电信PING值高达300-500ms。

2,网络、硬盘测试
网络非常一般,硬盘灰常给力!

7 Comments

Linux编写内核模块实例

本文演示了Linux加载内核模块(驱动)的过程,文中实验环境为CentOS 5.9 64bit。

1,准备工作
安装基础软件包

yum install kernel-devel.x86_64 gcc.x86_64 gcc-c++.x86_64

然后会在/usr/src/kernels/下面安装好内核源码包,最好把目录的名字改一下,以便能够与/lib/modules/$(uname -r)/目录相响应,避免/lib/modules/$(uname -r)/目录中有一些软链接找不到内核源码包位置

mv /usr/src/kernels/2.6.* /usr/src/kernels/$(uname -r)-x86_64

2,加入内核模块(驱动)
进入字符设备驱动目录

[root@localhost ~]# cd /usr/src/kernels/$(uname -r)-x86_64/drivers/char
[root@localhost char]# mkdir mycdev    #建立驱动目录
[root@localhost char]# cd mycdev/
[root@localhost char]# cat /proc/devices   #找一个未使用的字符设备主设备号,比如199,记好
[root@localhost mycdev]# vim mycdev.c    #建立内核态设备驱动程序,内容见下方
[root@localhost mycdev]# vim Makefile    #建立Makefile文件,内容见下方
Leave a Comment