Tag Archives: Linux

自己写了个linux的打包备份程序

每天cron运行下面的脚本,备份多个web目录和mysql数据库,备份的文件按月分目录保存。
#!/bin/sh
todaystr=`date +%Y-%m-%d`
echo “today:${todaystr}”
month=`date +%Y-%m`
echo “month:${month}”
backuppath=”/opt/case/kbackup/${month}”
# mkdir
if [ ! -d "$backuppath" ]; then
mkdir ${backuppath}
fi
#exit 0
# web code
for var in web1 web4 web5 web6 web7 web8 ; do
echo “– $var”
mypath=”/opt/case/${var}/web”
myfile=”${backuppath}/${todaystr}_web_${var}.tar.gz”
echo $mypath
echo $myfile
tar zcvf $myfile $mypath
done
# mysql db
for var in db1 db2 db3 ; do
echo “– $var”
mypath=”/var/lib/mysql/${var}”
myfile=”${backuppath}/${todaystr}_mysqldb_${var}.tar.gz”
echo $mypath
echo $myfile
tar zcvf $myfile $mypath
done

apache的常用module配置

用来做gzip压缩的deflate模块:
DeflateCompressionLevel  压缩等级,取值范围1–9,越高cpu的load越重。
大致的配置(得先SetOutputFilter再AddOutputFilter):
<IfModule mod_deflate.c>
DeflateCompressionLevel 3
SetOutputFilter DEFLATE
#AddOutputFilterByType DEFLATE php
AddOutputFilter DEFLATE php html htm js css xml
</IfModule>

用apxs灵活编译更多的apache模块

在apache安装的时候,可以选择–enable-so这一项,那么就可以通过apxs这个文件来扩展更多的apache 模块了。
不懂安装的请看我的“apache在linux上的编译安装”一文。
查看当前的apache是否支持so:
#/path/to/apache/bin/apachectl -l |grep mod_so
如果列表中有mod_so.c这一项,说明你目前的apache是支持,另外,你的/path/to/apache/bin/下面有没有apxs这个文件。
apxs的部分参数说明:
http://www.linux.gov.cn/netweb/mat/ApacheMenu_zh_CN/dso.html
-n modname
它明确设置了-i(install)和-g (template generation)选项的模块名称。 对-g选项,它是必须的; 对-i选项,apxs工具会按文件名判断至少是推测出这个模块名称。
-q
查询某种apxs设置的信息。 query参数可以是下列一个或多个字串:CC, CFLAGS, CFLAGS_SHLIB, INCLUDEDIR, LD_SHLIB, LDFLAGS_SHLIB, LIBEXECDIR, LIBS_SHLIB, SBINDIR, SYSCONFDIR, TARGET.这个参数用于手动查询某些设置。比如,要手动处理Apache的C头文件,可以在Makefile中使用
-g
此选项生成一个名为name的子目录(见选项-n)和其中的两个文件: 一个是名为mod_name.c的样板模块源程序, 可以用作建立你自己的模块的模板,或是学习使用apxs机制的良好开端; 另一个则是对应的Makefile,用于编译和安装此模块。
-c
此选项表示需要执行编译操作。 它首先会编译C源程序(.c)files为对应的目标代码文件(.o), 然后,连接这些目标代码和files中其余的目标代码文件(.o and .a), 以生成动态共享对象dsofile。如果没有指定-o选项, 则此输出文件名由files中的第一个文件名推测得到, 所以,缺省时,它一般会是mod_name.so
-i
此选项表示需要执行安装操作, 以安装一个或多个动态共享对象到服务器的modules目录中。
-a
此选项自动在httpd.conf文件中增加一个LoadModule行,以激活此模块,或者,如果此行已经存在,则启用之。
-A
与-a选项类似,但是它增加的LoadModule指令由一个井号前缀(#), 即,此模块已经准备就绪,但尚处于禁用状态。
-e
此选项表示需要执行编辑操作,它可以与-a和-A选项配合使用, 与-i操作类似,修改Apache的httpd.conf配置文件,但是并不安装此模块。
apxs的运作原理
一般来说,每个module都对应一个.c文件,放在你apache的源文件目录里面,让apache的这个apxs程序去编译对应的module.c的源文件,会在apache安装目录的modules/文件夹中生成对应的.so文件,再在httpd.conf里面添加LoadModule 指令,那么,每次启动apache 就会把对应的这个module载进来。
这写module的源文件有些有相互依存关系,安装的时候需要注意一下顺序和前后摆放。
通过apxs采用DSO方式安装mod_headers和mod_deflate两个模块:
# cd /path/to/apache/bin/

# ./apxs -i -a -c /path/to/source/modules/filters/mod_deflate.c
# ./apxs –i –a –c /path/to/source/modules/filters/mod_headers.c
去httpd.conf里面看看,两个LoadModule 都放在那里了。

apache在linux上的编译安装

http://www.linux.gov.cn/netweb/mat/ApacheMenu_zh_CN/programs/configure.html
apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:
静态编译:
编译的时候,所有的模块自己编译进httpd 这个文件中 ,启动apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再httpd.conf中在LoadModule来加载,只要在 <ifmodule></ifmodule> 中来配置就可以了。
动态编译:
编译的时候,使用enable-module=shared 或者enable-modules-shared=module来动态编译。 动态显然就不编译到httpd里面去了,启动的时候根本不会加载这个模块, 而是给你一个module.so 文件。你想用,就在httpd.conf中使用 loadmodule 这个语法来加载,这个模块才有效。
区别是:
静态的模块通常在http.conf中用<ifmodule></ifmodule> 来配置,动态的要先loadmoule来加载,然后再<ifmodule></ifmodule>配置。
官方说静态的比动态的在性能方面多5%左右。
相对来说,静态的效率高些,而动态方式配置方面灵活。想想如果编译进去的C这个module你想升级或者去掉,静态方式的就只能重新编译apache了。

下面这句在apache源文件夹下运行,可以查看默认情况下apache都给你装了那些module进去:
./configure –help | grep disable
让apache日后可以动态编译和加载模块:
如果想让apache日后可以支持动态编译(DSO)更多的module,需要在初次安装时把so这个模编译到核心。
如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。如果希望核心能够装载DSO,但不实际编译任何DSO模块,则需明确指定:
针对apache1.x:    –enable-module=so
针对apache2.x: –enable-so=static
apache模块的类型:
基本(B)模块默认包含,必须明确禁用;
扩展(E)/实验(X)模块默认不包含,必须明确启用。
那么,针对以上这些类型的模块,有以下几种操作方式:
–disable-MODULE
禁用MODULE模块(仅用于基本模块)
–enable-MODULE=shared
将MODULE编译为DSO(可用于所有模块)
–enable-MODULE=static
将MODULE静态连接进核心(仅用于扩展和实验模块)
–enable-mods-shared=MODULE-LIST
将MODULE-LIST中的所有模块都编译成DSO(可用于所有模块)
–enable-modules=MODULE-LIST
将MODULE-LIST静态连接进核心(可用于所有模块)
针对–enable-modules和–enable-module-shared有两个懒办法就是 most参数和all参数,分别表示“很多的”和“所有”。
例如:
mod_alias是个基本模块,不想安装的话就: –disable-alias
mod_rewrite是个扩展模块,想动态加载它:–enable-rewrite=shared,想静态加载就是:–enable-rewrite=static
想静态编译mod_alias和mod_rewrite:–enable-modules=’alias rewrite’
想动态编译mod_alias和mod_rewrite:–enable-modules-shared=’alias rewrite’
针对apache2.2.x的一些例子:
最大化静态安装apache:
./configure –prefix=/path/to/local –enable-modules=all
最大化动态安装apache:
./configure –prefix=/path/to/local –enable-mod-shared=all
静态安装rewrite、动态安装deflate以及headers
./configure –prefix=/path/to/local –enable-rewrite=static –enable-deflate=shared –enable-headers=shared
不安装基本的alais,保留以后的扩展DSO能力:
./configure –prefix=/path/to/local –enable-so=static –disable-alias

linux分区点滴

1,必要分开的几个区
/swap     交换分区,大小是物理内存的2倍而不大于4G
/boot     引导区,100-200M够了
/      根分区
2,针对服务器的不同用途
针对服务器的不同用途,来划分其他分区,比如把应用和数据分开多个区放。
未完待续..

关于VMwave workstation

想要学习linux,最简单的办法就是在自己的windows系统下装VM了,有了VM,就能在你的系统中虚拟出多个操作系统,他们只占你的CPU和硬盘,对你windows系统本身没有任何破坏。
1,什么是VMwave?
官方网站:www.vmware.com
简单的解释就是:用这个软件可以在你的windows/linux/mac系统中模拟出最多4个虚拟的操作系统,你可以在这个软件基础上装多个虚拟的操作系统,功能基本都能实现,但是效率我就不敢说了。
2,安装
一般我用VM都是用它来虚拟出linux,学习和测试用。
win下安装比较简单,直接下一步,我现在再用的还是5.5版本的workstation,够用就行。
之后序列号网上随便搜一个就OK。
3,wrokstation和player的区别
workstation版本可以建立新的虚拟操作系统,而player只能用来跑别人建立好的虚拟系统。
4,配置
没啥多讲的,新建虚拟机的时候,要用custom方式,然后“I/O adapater types”选“Buslogic”,还有“Virtual Disk Type”选“IDE”。
5,安装linux
找张linux安装盘或者下载的iso文件(iso文件方式需要配置一下),然后“Start this virtual Machine”就等安装画面吧。
6,关于64位和32位的VM
目前有两种说法:
A,在64位的宿主机上虚拟64位操作系统是没问题的。
B,如果你的硬件是64位,而装的是32位的操作系统,那么如果你的CPU支持Virtualization Technology的话,也可以在32位的宿主上运行64位的VM。
至少,32位的硬件是肯定VM不出64位的虚拟机的。

LINUX守护进程介绍

amd:自动安装NFS(网络文件系统)守侯进程
apmd:高级电源管理
Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs:自动安装管理进程automount,与NFS相关,依赖于NIS
Bootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息
crond:Linux下的计划任务
Dhcpd:启动一个DHCP(动态IP地址分配)服务器
Gated:网关路由守候进程,使用动态的OSPF路由选择协议
Httpd:WEB服务器
Inetd:支持多种网络服务的核心守候程序
Innd:Usenet新闻服务器
Linuxconf:允许使用本地WEB服务器作为用户接口来配置机器
Lpd:打印服务器
Mars-nwe:mars-nwe文件和用于Novell的打印服务器
Mcserv:Midnight命令文件服务器
named:DNS服务器
netfs:安装NFS、Samba和NetWare网络文件系统
network:激活已配置网络接口的脚本程序
nfs:打开NFS服务
nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务,它高速缓存用户口令和组成成员关系
portmap:RPC portmap管理器,与inetd类似,它管理基于RPC服务的连接
postgresql:一种SQL数据库服务器
routed:路由守候进程,使用动态RIP路由选择协议
rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序
ruserd:远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息
rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务
sendmail:邮件服务器sendmail
smb:Samba文件共享/打印服务
snmpd:本地简单网络管理候进程
squid:激活代理服务器squid
syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs:X Window字型服务器,为本地和远程X服务器提供字型集
xntpd:网络时间服务器
ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd:NIS口令服务器
ypserv:NIS主服务器
gpm:管鼠标的
identd:AUTH服务,在提供用户信息方面与finger类似Linux各项系统开机服务的功能是什么?有哪些可以关掉?
Linux在启动时要启动很多系统服务,它们向本地和网络用户提供了 Linux的系统功能接口,直接面向应用程序和用户。但是,开启不必要或有漏洞的服务则会 给操作系统带来安全和性能上的影响。下面我们以BluePoint Linux 2.0的开机服务为例,列表说明各项服务的功能。
alsasound
Alsa声卡驱动程序支持。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。
amd
运行automount精灵程序,该精灵在必要时自动安装一些 本地设备和NFS文件系统。
apmd
apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
arpwatch
该程序主要用来维护以太网物理地址和IP地址的对应关系。
atalk
AppleTalk精灵程序。注意不要在后台运行该程序,该程 序的数据结构必须在运行其他进程前先花一定时间初始化。
atd
运行用户用At命令调度的任务。也在系统负荷比较低时 运行批处理任务。
autofs
当您需要时自动转载文件系统,而当您不需要时自动卸载。
bootparamd
该服务允许老的Sun工作站从Linux网络启动,它和rarp 现在很少使用,基本上被bootp和dhcp取代了。
crond
cron是Unix下的一个传统程序,该程序周期地运行用户 调度的任务。比起传统的Unix版本,Vixie版本添加了不 少属性,而且更安全,配置更简单。
dhcpd 该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。
gated
gated通过一个数据库提供了网络路由功能支持。它支持 各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。
gpm
gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单。
httpd
http是著名的www服务器,可用来提供HTML文件以 及CGI动态内容服务。
inetd
因特网操作服务程序。监控网络对各种它管理的服务的需 求,并在必要的时候启动相应的服务程序。通常,inetd 管理的程序有telnet、ftp、rsh和rlogin。 关闭inetd也就 关闭了这些由它管理的服务。
innd
inn是最流行的用户组新闻服务器。它允许您建立起本地 新闻服务器。配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。
keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说 明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状 态。
ldap
LDAP代表Lightweight Directory Access Protocol, 实现了目录访问协议的行业标准。
linuxconf
linuxconf是Linux下的一个有效的系统配置工具,该服 务允许远程运行。
lpd
lpd是系统打印守护程序,负责将lpr等程序提交给打印 作业。
mcserv
Midnight Commander服务进程允许远程机器上的用户 通过Midnight Commander文件管理器操作本机文件。服 务进程用PAM来验证用户,需要给出“用 户名/口令” [...]

rh9上装oracle9i2

硬件:c42.4 华硕主板 声卡显卡集成 网卡realtek 内存512M
操作系统:rh linux9.0 (网上下载的 然后刻盘)
swap分区2G
boot分区2G
其他的剩下的硬盘容量都挂在 / 了
装好系统后只开放了一下22端口
oracle:oracle9i2 for linux
安装过程:
step1:加大共享内存
$ su – root
# cat /proc/sys/kernel/shmmax
33554432
# echo `expr 1024 \* 1024 \* 1024` > /proc/sys/kernel/shmmax
# cat /proc/sys/kernel/shmmax
1073741824
(注:这样做重启后就无效了!)
step2:建立oracle用户
su – root
groupadd dba
groupadd oinstall
useradd -c “Oracle software owner” -g oinstall -G dba oracle
passwd oracle
step3:建立oracle目录
su – root
mkdir /opt/oracle
mkdir /opt/oracle/product
mkdir /opt/oracle/product/9.2.0
chown -R oracle.oinstall /opt/oracle
mkdir /var/opt/oracle
chown oracle.dba /var/opt/oracle
chmod 755 /var/opt/oracle
step4:设置oracle环境变量
[oracle@localhost [...]

linux用户管理命令

只能有一个ROOT帐号。
想要普通用户有权限,以ROOT帐号登陆,然后输入chmod o +rw [fileName]。
建议你用man chmod看看chmod的详细说明。
修改权限:
1)管理用户(user)的工具或命令;
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多。
2)管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow [...]