linux用户管理-查看用户属性
发布于:2014-8-12 13:35 作者:admin 浏览:3484 分类:Linux1. ID方式查看
[root@WEB66 etc]# id root uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@WEB66 etc]# id loguser uid=505(loguser) gid=505(log) groups=505(log)
2. finger方式查看
[root@WEB66 etc]# finger root Login: root Name: root Directory: /root Shell: /bin/bash On since Wed Feb 12 09:36 (CST) on tty1 from :0 21 hours 6 minutes idle On since Wed Feb 12 09:40 (CST) on pts/0 from :0.0 5 hours 16 minutes idle On since Thu Feb 13 01:19 (CST) on pts/1 from 192.168.52.53 On since Thu Feb 13 01:22 (CST) on pts/2 from 192.168.52.53 3 hours 16 minutes idle Mail last read Thu Jan 2 14:20 2014 (CST) No Plan. [root@WEB66 etc]# finger loguser Login: loguser Name: 我是一个LOG管理员 Directory: /var/loguser Shell: /sbin/nologin Never logged in. No mail. No Plan.
linux用户管理-用户删除
发布于:2014-8-12 10:14 作者:admin 浏览:1526 分类:Linux
[root@WEB66 home]# userdel -h
Options:
-f, --force force removal of files,even if not owned by user (强制)
-h, --help display this help message and exit (帮助)
-r, --remove remove home directory and mail spool (同时删除用户目录和邮件)
[root@WEB66 home]# userdel -r demouser
相关的用户组,用户目录,用户密码等相关全部删除
linux用户管理-修改用户
发布于:2014-8-12 9:57 作者:admin 浏览:1612 分类:LinuxUsage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field (指定一段注释性描述)
-d, --home HOME_DIR new home directory for the user account (指定用户主目录)
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE (自 1/1/1970 起,密码被修改的天数,指定账号的有效期限,缺省表示永久有效 )
-f, --inactive INACTIVE set password inactive after expiration to INACTIVE (指定在密码过期后多少天即关闭该账号)
-g, --gid GROUP force use GROUP as new primary group (指定用户所属的用户组)
-G, --groups GROUPS new list of supplementary GROUPS (指定用户所属的附加组)
-a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups
-h, --help display this help message and exit (帮助)
-l, --login NEW_LOGIN new value of the login name (修改用户帐号名称)
-L, --lock lock the user account (锁定用户密码,使密码无效)
-m, --move-home move contents of the home directory to the new location (use only with -d) (移动到新目录,无目录时创建)
-o, --non-unique allow using duplicate (non-unique) UID (允许重复UID)
-p, --password PASSWORD use encrypted password for the new password (设置密码)
-s, --shell SHELL new login shell for the user account (指定用户登入后所使用的shell)
-u, --uid UID new UID for the user account (设置UID)
-U, --unlock unlock the user account (解除密码锁定)
-Z, --selinux-user new SELinux user mapping for the user account
范例: usermod -d /var/loguser -m -g log -G '' -s /sbin/nologin -u 505 -p 123456 -c '我是一个LOG管理员' -e 20000 -f 7 loguser
loguser:x:505:505:我是一个LOG管理员:/var/loguser:/sbin/nologin (/etc/passwd)
www:x:501: (/etc/group)
root:x:0:root (/etc/group)
log:x:505: (/etc/group)
loguser:123456:16113:0:99999:7:7:11656: (/etc/shadow)
Linux 用户管理-用户添加
发布于:2014-8-12 8:39 作者:admin 浏览:1635 分类:Linux1、 用户管理
Linux是个多用户多任务的分时操作系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也能帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和用户口令。用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
a.用户账号的添加、删除和修改。
b.用户口令的管理。
c.用户组的管理。
用户账号的管理主要涉及到用户账号的添加、删除和修改。
1.1 用户添加
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号使用useradd命令,语法如下:
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
useradd 选项 用户名
Options:
-b, --base-dir BASE_DIR base directory for the home directory of the new account
-c, --comment COMMENT GECOS field of the new account comment (指定一段注释性描述)。
-d, --home-dir HOME_DIR home directory of the new account (指定用户主目录)
-D, --defaults print or change default useradd configuration (默认)
-e, --expiredate EXPIRE_DATE expiration date of the new account (自 1/1/1970 起,密码被修改的天数,指定账号的有效期限,缺省表示永久有效 )
-f, --inactive INACTIVE password inactivity period of the new account (指定在密码过期后多少天即关闭该账号)
-g, --gid GROUP name or ID of the primary group of the new account (指定用户所属的用户组)
-G, --groups GROUPS list of supplementary groups of the new account (指定用户所属的附加组)
-h, --help display this help message and exit (帮助)
-k, --skel SKEL_DIR use this alternative skeleton directory
-K, --key KEY=VALUE override /etc/login.defs defaults
-l, --no-log-init do not add the user to the lastlog and faillog databases
-m, --create-home create the user's home directory (如果此目录不存在,则同时使用-m选项,能创建主目录)
-M, --no-create-home do not create the user's home directory (不创建用户目录)
-N, --no-user-group do not create a group with the same name as the user (不创建组)
-o, --non-unique allow to create users with duplicate (non-unique) UID (重复UID)
-p, --password PASSWORD encrypted password of the new account (设置密码)
-r, --system create a system account (创建一个系统用户)
-s, --shell SHELL login shell of the new account (指定用户登入后所使用的shell)
-u, --uid UID user ID of the new account (需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号)
-U, --user-group create a group with the same name as the user (附加组)
-Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping (SEUSER用户)
范例1: useradd demouser1
建立用户名=demouser1(uid=503), 用户组=demouser1(gid=503), 用户目录=/home/demouser1, SHELL=/bin/bash ,密码=''
demouser1:x:503:503::/home/demouser1:/bin/bash (/etc/passwd)
demouser1:x:503: (/etc/group)
demouser1:!!:16113:0:99999:7::: (/etc/shadow)
范例2: useradd -d /var/loguser -m -g log -G root,www -s /sbin/nologin -u 555 -p 123456 -c '我是一个LOG管理员' -e 20000 -f 7
loguser:x:555:505:我是一个LOG管理员:/var/loguser:/sbin/nologin (/etc/passwd)
log:x:505: (/etc/group)
root:x:0:root,loguser (/etc/group)
www:x:501:loguser (/etc/group)
loguser:123456:16113:0:99999:7:7:20000: (/etc/shadow)
rsync安装和使用
发布于:2014-2-7 11:03 作者:admin 浏览:1697 分类:Linux
实验环境
ip: 192.168.1.100 (rsync服务端)
ip: 192.168.1.110 (rsync客户端)
一、rsync软件介绍:
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
二、rysnc的主页地址为:http://rsync.samba.org/
三、rysnc安装
软件包安装
# sudo apt-get install rsync 注:在debian、ubuntu 等在线安装方法;
# yum install rsync 注:Fedora、Redhat 等在线安装方法;
# rpm -ivh rsync 注:Fedora、Redhat 等rpm包安装方法;
源码包安装
#tar zxvf rsync.tar.gz
#cd rsync
#./configure --prefix=/usr/local/rsync
#make
#make install
四、rsync配置(服务器IP:192.168.1.100)(主要有以下三个配置文件)
rsyncd.conf(主配置文件)
rsyncd.secrets(密码文件)
rsyncd.motd(rysnc服务器信息)
4.1 配置/etc/rsyncd.conf(需要手动生成)
rsyncd.conf的参数写在上边就是全局参数和写在模块里的就是模块参数
#vi /etc/rsyncd.conf
全局参数
uid = root //运行RSYNC守护进程的用户
gid = root //运行RSYNC守护进程的组
use chroot = no //不使用chroot
max connections = 4 //最大连接数为4
strict modes =yes //是否检查口令文件的权限
port = 873 //默认端口873
pid file = /var/run/rsyncd.pid //pid文件的存放位置
lock file = /var/run/rsync.lock //锁文件的存放位置
log file = /var/log/rsyncd.log //日志记录文件的存放位置
模块参数
[backup] //这里是认证的模块名,在client端需要指定
path = /home/backup/ //需要做镜像的目录,不可缺少!
comment = This is a test //这个模块的注释信息
ignore errors //可以忽略一些无关的IO错误
read only = yes // 只读
list = no //不允许列文件
auth users = backup_username //认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.pw //密码和用户名对比表,密码文件自己生成
hosts allow = 192.168.1.1,192.168.1.100 //允许主机
hosts deny = 0.0.0.0/0 //禁止主机
#transfer logging = yes
4.2 配置rsync密码 /etc/rsync.pw(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户) 账号:密码
#vi /etc/rsync.pw
backup_username:backup_password
权限:因为rsync.pw存储了rsync服务的用户名和密码,所以非常重要。要将rsync.pw设置为root拥有, 且权限为600。
#cd /etc
#chown root.root rsync.pw
#chmod 600 rsync.pw
4.3.rsyncd.motd(配置欢迎信息,可有可无)
# vi /etc/rsyncd.motd
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
Welcome to use the rsync services!
五、Rsync 的启动
5.1 守护进程方式
#/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
5.2 xinetd方式
修改services加入如下内容,修改的目的是让系统知道873端口对应的服务名为rsync。如没有的话就自行加入。
# nano -w /etc/services
rsync 873/tcp # rsync
rsync 873/udp # rsync
# vi /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
上述, 主要是要打开rsync這個daemon, 一旦有rsync client要连接時, xinetd会把它转介給 rsyncd(port 873)。然后service xinetd restart, 使上述设定生效.
#service xinetd restart
5.3 开机启动
#vi /etc/rc.local
#/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
或者
#chkconfig rsync on
六、验证、结束进程、防火墙设置
#ps -aux |grep rsync
root 59120 0.0 0.2 1460 972 ?? Ss 5:20PM 0:00.00 /usr/local/rsync/bin/rsync –daemon
#netstat -an |grep 873
tcp4 0 0 *.873 *.* LISTEN
#kill -9 pid的值 或者 #kill -15 进程名
#iptables -A INPUT -p tcp -s ! 192.168.1.110 --dport 873 -j DROP 或者 可以先service iptables stop 将防火墙关掉(测试环境下)
七、客户端测试(ip:192.168.1.110)(需要安装rsync客户端)
#vi /etc/rsync.client.pw
backup_password
#rsync -avz --exclude ".svn" --password-file=/etc/rsync.client.pw backup_username@192.168.1.100::backup /var/www/backup (远程文件备份到本地)
参数说明
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结 -p, --perms 保持文件权限
-o, --owner 保持文件属主信息 -g, --group 保持文件属组信息
-D, --devices 保持设备文件信息 -t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second -h, --help 显示帮助信息
rsync 的命令格式可以为以下六种:
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
对应于以上六种命令格式, rsync 有六种不同的工作模式:
1) 拷贝本地文件。当 SRC 和 DES 路径信息都不包含有单个冒号 ":" 分隔符时就启动这种工作模式。
2) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将本地机器的内容拷贝到远程机器。当 DST 路径地址包含单个冒号 ":" 分隔符时启动该模式。
3) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将远程机器的内容拷贝到本地机器。当 SRC 地址路径包含单个冒号 ":" 分隔符时启动该模式。
4) 从远程 rsync 服务器中拷贝文件到本地机。当 SRC 路径信息包含 "::" 分隔符时启动该模式。
5) 从本地机器拷贝文件到远程 rsync 服务器中。当 DST 路径信息包含 "::" 分隔符时启动该模式。
6) 列远程机的文件列表。这类似于 rsync 传输,不过只要在命令中省略掉本地机信息即可。
linux下rsync命令详细整理
发布于:2014-1-27 11:48 作者:admin 浏览:1586 分类:LinuxRsync的命令格式可以为以下六种:
rsync [OPTION]... SRC DEST
rsync [OPTION]... SRC [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
rsync [OPTION]... [USER@]HOST::SRC DEST
rsync [OPTION]... SRC [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
对应于以上六种命令格式,rsync有六种不同的工作模式:
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
rsync参数的具体解释如下:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息
一般都使用azv选项
Linux下常用SVN命令
发布于:2014-1-27 11:42 作者:admin 浏览:1539 分类:Linux1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain --username qinxiaohui
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci
4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
------------------------------------------------------------------------------
以上是常用命令,下面写几个不经常用的
------------------------------------------------------------------------------
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mkdir PATH...
2、mkdir URL...
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法:
1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
HAProxy 配置
发布于:2014-1-20 18:31 作者:admin 浏览:1961 分类:系统架构
global
参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无
误,就不需要再次配置进行修改
defaults
配置默认参数的,这些参数可以被利用配置到 frontend,backend,listen 组件
frontend
接收请求的前端虚拟节点, Frontend 可以根据规则直接指定具体使用后端的
backend(可动态选择)。
backend
后端服务集群的配置,是真实的服务器,一个 Backend 对应一个或者多个实体服务器。
listen
Frontend 和 Backend 的组合体。
以上 5 个组件不是必选的,可以根据需要选择部分作为配置。
详细的配置信息,请查阅官方文档
http://haproxy.1wt.eu/
组件配置如下:
global
#全局的日志配置 其中日志级别是[err warning info debug]
#local0 是日志设备,必须为如下 24 种标准 syslog 设备的一种:
#kern user mail daemon auth syslog lpr news
#uucp cron auth2 ftp ntp audit alert cron2
#local0 local1 local2 local3 local4 local5 local6 local7
#但是之前在/etc/syslog.conf 文件中定义的是 local0 所以
#这里也是用 local0
#如果日志无法写到 haproxy.log,解决方案如下
#vi /etc/syslog.conf
#添加 local3.* /var/log/haproxy.log
#添加 local0.* /var/log/haproxy.log
#vi /etc/sysconfig/syslog
#把 SYSLOGD_OPTIONS="-m 0" 改成 SYSLOGD_OPTIONS="-r –m 0"
#重启 syslogd: /etc/init.d/syslog restart
log 127.0.0.1 local0 info #[err warning info debug]
#最大连接数
maxconn 4096
#用户
user admin
#组
group admin
#使 HAProxy 进程进入后台运行。这是推荐的运行模式
daemon
#创建 4 个进程进入 deamon 模式运行。此参数要求将运行模式设置为"daemon"
nbproc 4
#将所有进程的 pid 写入文件启动进程的用户必须有权限访问此文件。
pidfile /usr/local/haproxy/haproxy.pid
defaults
#默认的模式 mode { tcp|http|health },tcp 是 4 层,http 是 7 层,health 只会返回 OK
mode http
#采用 http 日志格式
option httplog
#三次连接失败就认为是服务器不可用,也可以通过后面设置
retries 3
如果 cookie 写入了 serverId 而客户端不会刷新 cookie,
#当 serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
option redispatch
#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option abortonclose
#默认的最大连接数
maxconn 4096
#连接超时
contimeout 5000
#客户端超时
clitimeout 30000
#服务器超时
srvtimeout 30000
#=心跳检测超时
timeout check 2000
#注:一些参数值为时间,比如说 timeout。时间值通常单位为毫秒(ms),但是也可以通过
加#后缀,来使用其他的单位。
#- us : microseconds. 1 microsecond = 1/1000000 second
#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.
#- s : seconds. 1s = 1000ms
#- m : minutes. 1m = 60s = 60000ms
#- h : hours. 1h = 60m = 3600s = 3600000ms
#- d : days. 1d = 24h = 1440m = 86400s = 86400000ms
统计页面配置############
listen admin_stats
#监听端口
bind 0.0.0.0:1080
#http 的 7 层模式
mode http
#日志设置
log 127.0.0.1 local0 err #[err warning info debug]
#统计页面自动刷新时间
stats refresh 30s
#统计页面 url
stats uri /admin?stats
#统计页面密码框上提示文本
stats realm Gemini\ Haproxy
#统计页面用户名和密码设置
stats auth admin:admin
stats auth admin1:admin1
#隐藏统计页面上 HAProxy 的版本信息
stats hide-version
#######网站检测 listen 定义############
listen site_status
bind 0.0.0.0:1081
mode http
log 127.0.0.1 local0 err #[err warning info debug]
#网站健康检测 URL,用来检测 HAProxy 管理的网站是否可以用,正常返回 200,不正常返回
500
monitor-uri /site_status
#定义网站 down 时的策略
#当挂在负载均衡上的指定 backend 的中有效机器数小于 1 台时返回 true
acl site_dead nbsrv(denali_server) lt 1
acl site_dead nbsrv(tm_server) lt 1
acl site_dead nbsrv(mms_server) lt 1
#当满足策略的时候返回 500
monitor fail if site_dead
#如果 192.168.0.252 或者 192.168.0.31 这两天机器挂了
#认为网站挂了,这时候返回 500,判断标准是如果 mode 是
#http 返回 200 认为是正常的,如果 mode 是 tcp 认为端口畅通是好的
monitor-net 192.168.0.252/31
frontend 配置############
frontend http_80_in
#监听端口
bind 0.0.0.0:80
#http 的 7 层模式
mode http
#应用全局的日志配置
log global
#启用 http 的 log
option httplog
#每次请求完毕后主动关闭 http 通道,HA-Proxy 不支持 keep-alive 模式
option httpclose
#如果后端服务器需要获得客户端的真实 IP 需要配置次参数,将可以从 Http Header 中
#获得客户端 IP
option forwardfor
###########HAProxy 的日志记录内容配置##########
capture request header Host len 40
capture request header Content-Length len 10
capture request header Referer len 200
capture response header Server len 40
capture response header Content-Length len 10
capture response header Cache-Control len 8
####################acl 策略定义#########################
#如果请求的域名满足正则表达式返回 true -i 是忽略大小写
acl denali_policy hdr_reg(host) -i ^(www.xxx.net|...
#如果请求域名满足 trade.xxx.net 返回 true -i 是忽略大小写
acl tm_policy hdr_dom(host) -i trade.xxx.net
##在请求 url 中包含 sip_apiname=,则此控制策略返回 true,否则为 false
acl invalid_req url_sub -i sip_apiname=
##在请求 url 中存在 timetask 作为部分地址路径,则此控制策略返回 true,否则返回 false
acl timetask_req url_dir -i timetask
#当请求的 header 中 Content-length 等于 0 时返回 true
acl missing_cl hdr_cnt(Content-length) eq 0
######################acl 策略匹配相应###################
##当请求中 header 中 Content-length 等于 0 阻止请求返回 403
block if missing_cl
##block 表示阻止请求,返回 403 错误,当前表示如果不满足策略 invalid_req,或者满足策略 timetask_req,则阻止请求。
block if !invalid_req || timetask_req
#当满足 denali_policy 的策略时使用 denali_server 的 backend
use_backend denali_server if denali_policy
#当满足 tm_policy 的策略时使用 tm_server 的 backend
use_backend tm_server if tm_policy
#reqisetbe 关键字定义,根据定义的关键字选择 backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats
#以上都不满足的时候使用默认 mms_server 的 backend
default_backend mms_server
#HAProxy 错误页面设置
errorfile 400 /usr/local/haproxy/errorfiles/400.http
errorfile 403 /usr/local/haproxy/errorfiles/403.http
errorfile 408 /usr/local/haproxy/errorfiles/408.http
errorfile 500 /usr/local/haproxy/errorfiles/500.http
errorfile 502 /usr/local/haproxy/errorfiles/502.http
errorfile 503 /usr/local/haproxy/errorfiles/503.http
errorfile 504 /usr/local/haproxy/errorfiles/504.http
##########backend 的设置##############
backend mms_server
#http 的 7 层模式
mode http
#负载均衡的方式,roundrobin 平均方式
balance roundrobin
#允许插入 serverid 到 cookie 中,serverid 后面可以定义
cookie SERVERID
#心跳检测的 URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳检测 HTTP 的版本,XXX 为检测时请求
#服务器的 request 中的域名是什么,这个在应用的检测 URL 对应的功能有对域名依赖的话
需要设置
option httpchk GET /member/login.html HTTP/1.1\r\nHost:xxx.com
#服务器定义,cookie 1 表示 serverid 为 1,check inter 1500 是检测心跳频率
#rise 3 是 3 次正确认为服务器可用,fall 3 是 3 次失败认为服务器不可用,weight 代表
权重
server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2
backend denali_server
mode http
#负载均衡的方式,source 根据客户端 IP 进行哈希的方式
balance source
#但设置了 backup 的时候,默认第一个 backup 会优先,设置 option allbackups 后
#所有备份服务器权重一样
option allbackups
#心跳检测 URL 设置
option httpchk GET /xxx/xxx.html HTTP/1.1\r\nHost:xxx.com
#可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置
#如 minconn 10 maxconn 20
server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3
server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3
#备份机器配置,正常情况下备机不会使用,当主机的全部服务器都 down 的时候备机会启用
server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
backend tm_server
mode http
#负载均衡的方式,leastconn 根据服务器当前的请求数,取当前请求数最少的服务器
balance leastconn
option httpchk GET /xxx/xxx.htm HTTP/1.1\r\nHost:trade.xxx.com
server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3
server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3
######reqisetbe 自定义关键字匹配 backend 部分#######################
backend dynamic
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.xxx.net
server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3
backend stats
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.xxx.net
server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3
haproxy 的启动
/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/haproxy.cfg
Haproxy 的重启
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat
/usr/local/haproxy/haproxy.pid` (不要换行)
Haproxy 的停止
Killall -9 haproxy
启动参数
haproxy -f < 配置文件>
[-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p ] [-s] [-l] [-dk]
[-ds] [-de] [-dp] [-db] [-m < 内存限制 M>] [{-sf|-st} pidlist...]
-d 前台,debug 模式
-D daemon 模式启动
-q 安静模式,不输出信息
-V 详细模式
-c 对配置文件进行语法检查
-s 显示统计数据
-l 显示详细统计数据
-dk 不使用 kqueue
-ds 不使用 speculative epoll
-de 不使用 epoll
-dp 不使用 poll
-db 禁用后台模式,程序跑在前台
-sf 程序启动后向 pidlist 里的进程发送 FINISH 信号,这个参数放在命令行的最后
-st 程序启动后向 pidlist 里的进程发送 TERMINATE 信号,这个参数放在命令行的最后
Haproxy 安装和调试。
发布于:2014-1-20 17:34 作者:admin 浏览:2650 分类:系统架构Haproxy 可以做4层(tcp)/7层(http)代理,利用Haproxy的7层代理实现一个负载均衡器
1. 测试环境
192.168.1.10 (Haproxy 负载均衡机器)
192.168.1.20 (WEB20服务器)
192.168.1.30 (WEB30服务器)
2.在 192.168.1.10 (Haproxy 负载均衡机器) 安装Haproxy
2.1 下载Haproxy
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
2.2 解压安装
# tar -zxvf haproxy-1.4.24.tar.gz (解压文件)
# cd haproxy-1.4.24 (进入工作目录)
# uname -a (查看Liunx内核版本)
Linux localhost.localdomain 2.6.33.3-85.fc13.i686 #1 SMP Thu May 6 18:44:12 UTC 2010 i686 i686 i386 GNU/Linux
# make TARGET=linux26 PREFIX=/usr/local/haprpxy install (根据内核版本编译和安装haprpxy)
2.3 配置Haproxy.cfg (只要是负载均衡配置)
(...省略...)
listen haproxy.test.com
bind *:80
mode http
option httplog
balance roundrobin
option httpchk GET /index.html (WEB服务器一定要存在这个健康检查文件,负责服务检查失败,出现503错误)
server web20 192.168.1.20:80 weight 2 check inter 2000 rise 2 fall 3
server web30 192.168.1.30:80 weight 1 check inter 2000 rise 2 fall 3
2.4 启动haproxy
#/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
3. 配置WEB服务器
在服务器 192.168.1.20(WEB20) 写入主页:echo 'IP=192.168.1.20(WEB20)' >> /index.html
在服务器 192.168.1.30(WEB30) 写入主页:echo 'IP=192.168.1.30(WEB30)' >> /index.html
4. 测试负载均衡
访问: http://192.168.1.20/index.html 出现 IP=192.168.1.20(WEB20)
访问: http://192.168.1.30/index.html 出现 IP=192.168.1.30(WEB30)
访问: http://192.168.1.10 出现 第1次:IP=192.168.1.20(WEB20) 第2次:IP=192.168.1.20(WEB20) 第3次:IP=192.168.1.30(WEB30) 【因为WEB20的机器权重为2,WEB30权重为1】
如果出现上述结果:表示成功安装haproxy并且成功配置负载均衡。
5.查看统计页面
编辑 haproxy.cfg,加入 stats uri /stats
访问: http://192.168.1.10/stats
MEMCACHE共享SESSION
发布于:2014-1-10 11:42 作者:admin 浏览:2119 分类:系统架构1. 实验环境(2个机器) 192.168.1.10(Memcached服务器) 192.168.1.20(WEB服务器)
2.配置Memcached服务器(192.168.1.10) 安装: yum install memcached 开启: memcached -d -m 32 -p 11211 -u root (开启11211端口提供服务,32M缓存,最好不要带-l 如 -l 127.0.0.1,否则会导致远程服务器连接不上)
3.在WEB机器上编写测试程序(192.168.1.20. 注意:一定要安装memcache扩展)
<?php header("Content-type:text/html; charset=utf-8"); echo "<pre>"; $mamcache_server_ip='192.168.1.10'; $mamcache_server_port='11211'; //设置MemcacheSession共享 ini_set("session.save_handler","memcache"); ini_set("session.save_path","tcp://$mamcache_server_ip:$mamcache_server_port"); session_start(); //session赋值 $session_id=session_id(); var_dump("session_id=".$session_id); $action=$_GET['action']; switch($action) { //清除$_SESSION['mem_session'] case 'clear': unset($_SESSION['mem_session']); var_dump($_SESSION['mem_session']); //session_destroy(); break; //存储SESSION case 'set': $_SESSION['mem_session']='测试SESSION='.date("Y-m-d H:i:s"); var_dump($_SESSION['mem_session']); break; //获取SESSION case 'get': var_dump($_SESSION['mem_session']); break; //查看Memcahce如何存储的SESSION case 'mem': //从MEMCACHE读取SESSION的值。 $memcache = new Memcache; $memcache->connect($mamcache_server_ip,$mamcache_server_port) or die ("连接服务器失败"); //key 来源 session_id(); $result = $memcache->get($session_id); var_dump("结果=".$result); break; } echo "</pre>"; ?>
4. 测试结果如下: 4.1. http://localhost/session.php?action=clear string(37) "session_id=o8lb038n05c6e185d0c882kp84" NULL 4.2. http://localhost/session.php?action=set string(37) "session_id=o8lb038n05c6e185d0c882kp84" string(33) "测试SESSION=2014-01-10 05:32:46" 4.3.http://localhost/session.php?action=get string(37) "session_id=o8lb038n05c6e185d0c882kp84" string(33) "测试SESSION=2014-01-10 05:32:46" 4.4.http://localhost/session.php?action=mem string(37) "session_id=o8lb038n05c6e185d0c882kp84" string(60) "结果=mem_session|s:33:"测试SESSION=2014-01-10 05:32:46";"