技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

linux下rsync数据同步

 简介对于选择linux 作为应用平台的的中小型企业或网站来说,往往面临如何实现数据远程备份或者网站镜象的问题,虽然有商业化的备份和镜象产品可供选择,但这些产品的价格往往过于昂贵。因此如何利用自由软件高效实现远程备份和网站镜象就成为一个值得讨论的话题。 通过网络进行远程数据备份或者网站镜象的最简单的方法就是使用wget,但是这种方式每次都需要将所有数据都重新在网络上传输一遍,而不考虑哪些文件是经过更新的,因此效率非常低下。尤其在需要备份的数据量很大的时候,往往需要花费数个小时来在网络上进行数据传输。 因此这里就介绍一种高效的网络远程备份和镜象工具rsync,它可以满足绝大多数要求不是特别严格的备份需求。 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了remote sync。它的特性如下: 可以镜像保存整个目录树和文件系统。 可以很容易做到保持原来文件的权限、时间、软硬链接等等。 无须特殊权限即可安装。 优化的流程,文件传输效率高。 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 支持匿名传输,以方便进行网站镜象。软件下载rysnc的主页地址为: http://rsync.samba.org/ 目前最新版本为3.0.9。可以选择从原始网站下载:http://rsync.samba.org/ftp/rsync/。也可以选择从本站下载:rsync 3.0.9。 编译安装rsync的编译安装非常简单,只需要以下简单的几步: [root@rsync-test rsync-3.0.9]# ./configure --prefix=/usr/local/rsync[root@rsync-test rsync-3.0.9]# make[root@rsync-test rsync-3.0.9]# make install 但是需要注意的是必须在服务器A和B上都安装rsync,其中A服务器上是以服务器模式运行rsync,而B上则以客户端方式运行rsync。这样在web服务器A上运行rsync守护进程,在B上定时运行客户程序来备份web服务器A上需要备份的内容。 rsync服务器1、rsync服务器的启动 在web服务器A上需要以守护进程方式来启动rsync服务器,只需要运行: [root@www rsync-2.4.6]# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync.conf 即可启动。rsync默认服务端口为873,服务器在该端口接收客户的匿名或者认证方式的备份请求。 启动时把服务起来,: 加入rc.local 编辑/etc/rc.d/rc.local,在最后添加: /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync.conf 2、rsync的配置 对于rsync服务器来说,最重要和复杂的就是它的配置了。rsync服务器的配置文件为/usr/local/rsync.conf,其控制认证、访问、日志记录等等。 该文件是由一个或多个模块结构组成。一个模块定义以方括弧中的模块名开始,直到下一个模块定义开始或者文件结束,模块中包含格式为name = value的参数定义。每个模块其实就对应需要备份的一个目录树,比方说在我们的实例环境中,有两个目录树需要备份:/data/wwwroot/、/data/mysql/data,那么就需要在配置文件中定义两个模块,分别对应两个目录树。 配置文件是行为单位的,也就是每个新行都表示一个新的注释、模块定义或者参数赋值。以#开始的行表示注释,以""结束的行表示下面一行是该行的继续。参数赋值中等号后可能是一个大小写不敏感的字符串、一个以trure/false表示的布尔值。 全局参数 在文件中[modlue]之前的所有参数都是全局参数,当然也可以在全局参数部分定义模块参数,这时候该参数的值就是所有模块的默认值。 motd file "motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。 log file "log file"指定rsync的日志文件,而不将日志发送给syslog。 pid file 指定rsync的pid文件。 syslog facility 指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。 模块参数 在全局参数之后就需要定义一个或多个模块了,模块中可以定义以下参数: comment 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。 path 指定该模块的供备份的目录树路径,该参数是必须指定的。 use chroot 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。 max connections 指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。 lock file 指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。 read only 该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。 list 该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。 uid 该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是"nobody"。 gid 该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为"nobody"。 exlude 用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include。 但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exlude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。 exlude from 指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exlude列表定义。 include  用来指定多个由空格隔开的多个rsync并应该exlude的模式列表。这等同于在客户端命令中使用--include来指定模式,结合include和exlude可以定义复杂的exlude/include规则 。一个模块只能指定一个include选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include。 include from 指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。 auth users 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。 secrets file 该选项指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个。(例如:/usr/local/rsync/rsyncd.secrets) strict modes 该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。 hosts allow 该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式: o xxx.xxx.xxx.xxx,客户主机只有完全匹配该IP才允许访问。例如:192.168.0.1 o a.b.c.d/n,属于该网络的客户都允许连接该模块。例如:192.168.0.0/24 o a.b.c.d/e.f.g.h,属于该网络的客户都允许连接该模块。例如:192.168.0.0/255.255.255.0 o 一个主机名,客户主机只有拥有该主机名才允许访问,例如:backup.x。  o *.linuxaid.com.cn,所有属于该域的主机都允许。 默认是允许所有主机连接。 hosts deny 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。 ignore errors 指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。 ignore nonreadable 指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。 transfer logging 使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。 log format 通过该选项用户在使用transfer logging可以自己定制日志文件的字段。其格式是一个包含格式定义符的字符串,可以使用的格式定义符如下所示: o %h 远程主机名 o %a 远程IP地址 o %l 文件长度字符数 o %p 该次rsync会话的进程id o %o 操作类型:"send"或"recv" o %f 文件名 o %P 模块路径 o %m 模块名 o %t 当前时间 o %u 认证的用户名(匿名时是null) o %b 实际传输的字节数 o %c 当发送文件时,该字段记录该文件的校验码 默认log格式为:"%o %h [%a] %m (%u) %f %l",一般来说,在每行的头上会添加"%t [%p] "。在源代码中同时发布有一个叫rsyncstats的perl脚本程序来统计这种格式的日志文件。 timeout 通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。 refuse options 通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:"dont compress = *"。 dont compress 用来指定那些不进行压缩处理再传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz rsync客户命令在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。 首先,rsync的命令格式可以为: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... SRC [SRC]... DEST rsync [OPTION]... [USER@]HOST::SRC [DEST] rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]rsync有六种不同的工作模式: 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。1、用法 在使用rsync传输文件时,需要指定一个源和一个目的,其中一个可能是远程机器的资源信息。例如: rsync *.c foo:src/ 表示将传输当前目录下所有以.c结尾的文件到机器foo的src目录下。如果任何文件已经存在于远程系统,则会调用远程更新协议来实现仅仅传输那些更新过的文件。 rsync -avz foo:src/bar /data/tmp 该命令则递归地传输机器foo上的src/bar目录下的所有内容到本地/data/tmp/bar目录中。文件以归档模式进行传输,以确保符号链结、属性、权限、属主等信息在传输中都被保存。此外,可以使用压缩技术来加快数据传输: rsync -avz foo:src/bar/ /data/tmp 路径信息以"/"结尾时表示拷贝该目录,而不以"/"结尾表示拷贝该目录。当配合使用--delete选项时这两种情况的区别将会表现出来。 也可以以本地模式来使用rsync,如果SRC和DST路径中都没有任何":"符号则表示该命令运行在本地模式,等同于cp命令。 rsync somehost.mydomain.com:: 这种模式则将会列出somehost.mydomain.com.可以访问的所有模块信息。 选项说明 -v, --verbose 详细模式输出-q, --quiet 精简输出模式-c, --checksum 打开校验开关,强制对文件传输进行校验-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD-r, --recursive 对子目录以递归模式处理-R, --relative 使用相对路径信息 rsync foo/bar/foo.c remote:/tmp/ 则在/tmp目录下创建foo.c文件,而如果使用-R参数: rsync -R foo/bar/foo.c remote:/tmp/ 则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。 -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的shell程序--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 显示帮助信息   实例分析  这里假设有两台服务器:A和B。其中A是主web服务器,具有域名xucg.me(172.16.1.5),B服务器是备份机,其域名为backup.xucg.me(172.16.1.6)。其中A的web内容存放在:/data/wwwroot/我们需要在备份机B上建立对这几个目录内容的备份。 服务器配置实例 那么在xucg.me上创建rsyncd的配置文件/usr/local/rsync/rsyncd.conf,内容如下: uid = nobodygid = nobodyuse chroot = nomax connections = 4pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log [www]path = /data/wwwroot/ignore errorsread only = truelist = falsehosts allow = 172.16.1.0/24hosts deny = 0.0.0.0/32auth users = backupsecrets file = /usr/local/rsync/back.pass这里只允许172.16.1.0备份本机的数据,并且需要认证。授权的备份用户为backup,并且用户信息保存在文件/usr/local/rsync/back.pass中,其内容如下: backup:back 并且该文件只能是root用户可读写的,否则rsyncd启动时会出错。这些文件配置完毕以后,就需要在A服务器上启动rsyncd服务器: /usr/local/rsync/binrsync --daemon --config=/usr/local/rsync/rsync.conf  #注意因我们修改了rsync安装目录,所以如果不加配置文件路径,服务会提示/etc/rsync.conf文件不存在。 客户命令示例 /usr/local/bin/rsync -vzrtopg --delete  --progress backup@172.16.1.5::www /backup/www/ --password-file=/usr/local/rsync/back.pass 上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。 backup@172.16.1.5::www 表示对该命令是对服务器172.16.1.5中的www模块进行备份,backup表示使用backup来对该模块进行备份。 --password-file=/usr/local/rsync/back.pass来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有root可读。 这里将备份的内容存放在备份机的/backup/www/目录下。 [root@linuxaid /]# /usr/local/bin/rsync -vzrtopg --delete  --progress backup@172.16.1.5::www /backup/www/ --password-file=/usr/local/rsync/back.passreceiving file list ... done./1785 (100%)1.py4086 (100%)2.py10680 (100%)a0 (100%)ip3956 (100%)./wrote 2900 bytes read 145499 bytes 576.34 bytes/sectotal size is 2374927 speedup is 45.34 可以将客户命令通过crontab -e命令来实现自动备份,如crontab -e: 一些示例脚本这里这些脚本都是rsync网站上的例子: 1、每隔七天将数据往中心服务器做增量备份 #!/bin/sh # This script does personal backups to a rsync backup server. You will end up# with a 7 day rotating incremental backup. The incrementals will go# into subdirectories named after the day of the week, and the current# full backup goes into a directory called "current"# tridge@linuxcare.com # directory to backupBDIR=/home/$USER # excludes file - this contains a wildcard pattern per line of files to excludeEXCLUDES=$HOME/cron/excludes # the name of the backup machineBSERVER=owl # your password on the backup serverexport RSYNC_PASSWORD=XXXXXX  ######################################################################## BACKUPDIR=`date +%A`OPTS="--force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES--delete --backup --backup-dir=/$BACKUPDIR -a" export PATH=$PATH:/bin:/usr/bin:/usr/local/bin # the following line clears the last weeks incremental directory[ -d $HOME/emptydir ] || mkdir $HOME/emptydirrsync --delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/rmdir $HOME/emptydir # now the actual transferrsync $OPTS $BDIR $BSERVER::$USER/current 2、备份至一个空闲的硬盘 #!/bin/sh export PATH=/usr/local/bin:/usr/bin:/bin LIST="rootfs usr data data2" for d in $LIST; domount /backup/$drsync -ax --exclude fstab --delete /$d/ /backup/$d/umount /backup/$ddone DAY=`date "+%A"` rsync -a --delete /usr/local/apache /data2/backups/$DAYrsync -a --delete /data/solid /data2/backups/$DAY 3、对vger.rutgers.edu的cvs树进行镜像 #!/bin/bash cd /var/www/cvs/vger/PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin RUN=`lps x | grep rsync | grep -v grep | wc -l`if [ "$RUN" -gt 0 ]; thenecho already runningexit 1fi rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog sum1=`sum $HOME/ChangeLog`sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog` if [ "$sum1" = "$sum2" ]; thenecho nothing to doexit 0fi rsync -az --delete --force vger.rutgers.edu::cvs/ /var/www/cvs/vger/exit 0 FAQQ:如何通过ssh进行rsync,而且无须输入密码?A:可以通过以下几个步骤 1. 通过ssh-keygen在server A上建立SSH keys,不要指定密码,你会在~/.ssh下看到identity和identity.pub文件2. 在server B上的home目录建立子目录.ssh3. 将A的identity.pub拷贝到server B上4. 将identity.pub加到~[user b]/.ssh/authorized_keys5. 于是server A上的A用户,可通过下面命令以用户B ssh到server B上了e.g. ssh -l userB serverB这样就使server A上的用户A就可以ssh以用户B的身份无需密码登陆到server B上了。 Q:如何通过在不危害安全的情况下通过防火墙使用rsync?A:解答如下: 这通常有两种情况,一种是服务器在防火墙内,一种是服务器在防火墙外。无论哪种情况,通常还是使用ssh,这时最好新建一个备份用户,并且配置sshd仅允许这个用户通过RSA认证方式进入。 如果服务器在防火墙内,则最好限定客户端的IP地址,拒绝其它所有连接。如果客户机在防火墙内,则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。 Q:我能将更改过或者删除的文件也备份上来吗?A:当然可以: 你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13 ...这样的命令来实现。这样如果源文件:/path/to/some/file.c改变了,那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c,这里这个目录需要自己手工建立起来 Q:我需要在防火墙上开放哪些端口以适应rsync?A:视情况而定 rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口: rsync --port 8730 otherhost::或者rsync -e 'ssh -p 2002' otherhost: Q:我如何通过rsync只复制目录结构,忽略掉文件呢?A:rsync -av --include '*/' --exclude '*' source-dir dest-dir Q:为什么我总会出现"Read-only file system"的错误呢?A:看看是否忘了设"read only = no"了 Q:为什么我会出现'@ERROR: invalid gid'的错误呢?A:rsync使用时默认是用uid=nobody;gid=nobody来运行的,如果你的系统不存在nobody组的话,就会出现这样的错误,可以试试gid = nogroup或者其它 Q:绑定端口873失败是怎么回事?A:如果你不是以root权限运行这一守护进程的话,因为1024端口以下是特权端口,会出现这样的错误。你可以用--port参数来改变。 Q:为什么我认证失败?A:从你的命令行看来: 你用的是:> bash$ rsync -a 144.16.251.213::test test> Password:> @ERROR: auth failed on module test>> I dont understand this. Can somebody explain as to how to acomplish this.> All suggestions are welcome. 应该是没有以你的用户名登陆导致的问题,试试rsync -a max@144.16.251.213::test test ... 全文

linux linux系统 数据同步 rsync

回望 Linux 和开源技术在 2014 年的大起大落

ZDNet 科技观察家 Steven J. Vaughan-Nichols 在年终发表了对 Linux 和开源技术这一年跌宕起伏的总结,细数这一年中的惊喜和不堪。2014 Linux 之殇“心脏出血(Heartbleed)”... 全文

Linux Linux回顾

Linux运维工程师必备技能

说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。我就大概列出这几方面,这样入门就基本没问题了。... 全文

Linux Linux运维工程师必备技能

PXE自动安装linux系统

 实验目的:在一个大的网络里,每台主机要安装linux系统,并且可以自动安装,只需能够从服务器上下载安装的软件就能完成安装,作为客户端能够登录并且实现下载的是FTP服务器,自动获得IP地址的是DHCP服务器,内核,驱动,主要的配置文件是在TFTP服务器上配置。客户端通过自动获得IP地址后,DHCP又告诉客户端TFTP的IP地址和配置文件,然后实现自动安装。 (一)配置网络服务器FTP,DHCP,TFTP在一台主机上完成... 全文

linux PXE linux系统 自动安装

在LINUX中部署DHCP服务器

                                               在LINUX中部署DHCP服务器 一. 安装DHCP服务器软件。二. 在DHCP服务器的主配置文件中(dhcpd.conf),进行配置。三. 启动DHCP服务。四. 查看DHCP服务器的状态。五. DHCP客户端配置。 具体的操作步骤如下:1.挂载光盘。如下图所示: 2. 在挂载目录下,安装软件。如下图所示:   3.在dhcpd.conf配置文件中,对服务器进行配置。如下图所示:  注:初次打开dhcpd.conf文件,默认是没有配置项的,需要手工建立.        但可以从(/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample) 此文件的复制,然后进行修改。如下图所示:     上图中一次对,子网,子网掩码,网关,以及地址范围。进行了修改。 4. 启动dhcpd服务。如下图所示: 5.查看dhcpd服务器的状态。如下图所示: 6.下面是在客户机中进行配置。如下图所示:  7.重新启动网络接口。如下图所示: 8. 在客户机中查看,是否收到了DHCP服务器,分配的IP地址。如下图所示:注:在linux中,服务器分配IP是从后向前分配的。因为我的IP范围是(192.168.0.128.--192.168.0.254),所以第一台客户机分配到的地址一定是192.168.0.254 其它的就一此类推。 通过ping 服务器(192.168.0.44),测试分配的地址是否有用。从下图中看出能ping 通。  完成所有操作,若发现有错的,或不完整的地方,请大家多多指教!   本文出自 “beyond” 博客,谢绝转载!... 全文

LINUX 休闲 职场 linux系统

巧用Recent模块加固Linux安全

众所周知,Linux可以通过编写iptables规则对进出Linux主机的数据包进行过滤等操作,在一定程度上可以提升Linux主机的安全性,在新版本内核中,新增了recent模块,该模块可以根据源地址、目的地址统计最近一段时间内经过本机的数据包的情况,并根据相应的规则作出相应的决策,详见:http://snowman.net/projects/ipt_recent/... 全文

Recent模块 Linux安全 Linux

【连载二】关于Linux的历史介绍

很多关于Linux的书籍在前面章节中写了一大堆东西来介绍Linux,可惜读者看了好久也没有正式开始进入Linux的世界,这样反而导致了他们对Linux失去了一些兴趣,而把厚厚的一本书丢掉。Linux的历史确实有必要让读者了解的,但是不了解也并不会影响你将来的Linux技术水平。哈哈,阿铭其实就不怎么了解Linux的历史,所以对于Linux的历史在本教程中不会涉及到。如果你感兴趣的话,那你去网上搜一下吧,一大堆呢足够让你看一天的。虽然我不太想啰嗦太多,但是关于Linux最基本的认识,我还是想简单介绍一下的。也算是我对Linux的创始人Linus Torvalds 先生的尊重。在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下。我发现我身边的朋友对Linux的发音大致有这么几种: “里那克斯”与 “里泥克斯”“里扭克斯”等。其实官方的标准发音为 [‘li:nэks],因为这个发音是创始人Linus的发音。如果你不认识这个音标,那么就读成“里那克斯”。而阿铭习惯发音成“里泥克斯”,当然你发音成什么,并没有人会说你,完全是一个人的习惯而已。也许有的读者已经了解到,Linux和unix是非常像的。没错,Linux就是根据unix演变过来的。当年linus就是因为接触到了unix而后才自己想开发一个简易的系统内核的,他开发的简易系统内核其实就是Linux。当时linus把开发的这个系统内核丢到网上提供大家下载,由于它的精致小巧,越来越多的爱好者去研究它。人们对这个内核添枝加叶,而后成为了一个系统。也许你听说过吧,Linux是免费的。其实这里的免费只是说Linux的内核免费。在Linux内核的基础上而产生了众多Linux的版本。Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。较知名的发行版有:RedHat、CentOS、Ubuntu、Debain、Fedora、SuSE、等等,我就不一一列举了。而阿铭常用的就是Redhat 和 CentOS,这里有必要说一下,其实CentOS是基于Redhat的,网上有人说,Centos是Redhat企业版的克隆。阿铭所在公司的服务器全部都是安装CentOS系统,并且相当稳定。CentOS较之于Redhat 可以免费使用yum 下载安装所需要的软件包,这个是相当方便的。而Redhat要想使用yum必须要购买服务了。... 全文

linux学习 linux教程

Linux入门之《Ubuntu Linux指南:基础篇》

多年来,数十万读者通过Mark G. Sobell的书走进UNIX/Linux世界,一些人已成为各自领域和机构的UNIX/Linux专家。现在,这部凝聚了作者几十年研究成果的经典之作 秉承Sobell特有的清晰、高效而且生动的叙述风格的同时,为大家呈现了Ubuntu Linux这个健壮、功能丰富的系统。全书内容更加全面、更加贴近读者需求,阐述更加深入细致。作者在书中不仅讲述具体操作,而且探讨内部工作机制,让读者真正知其然,更知其所以然。无论你是 普通用户,还是系统管理员,都可以通过本书翔实的叙述,丰富全面的技术内容来掌握Linux技术。在汲取书中营养,充实头脑的同时,你会更加自信地应对当 前和未来面临的挑战。... 全文

ubuntu Linux

Linux笔记3.文件管理

3.文件管理文件的三种用户类型 1、所有者:文件的主人 2、所有者组:文件所属的team 3、其它人:除了所有者和所有者组的所有人 文件所有者和所有者组的信息是存放在/etc/passwd和/etc/group文件中 文件属性第一栏的第一个属性代表文件的类型:... 全文

linux 文件管理 Linux 职场 休闲

pxe 远程安装linux系统

        今天和同事去机房安装硬盘,拆开机器,发现SCSI线不够长,只能接一个硬盘.看来只能用新硬盘替换下老硬盘,可是去的时候没有带任何光盘,无法给新硬盘安装操作系统,同事说可以回去用PXE,远程安装系统.以前对PXE也有一些了解,不过没有实践过.在网上查了如下资料: 基本原理  1) 什么是PXE  PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。  PXE协议的成功运行需要解决以下两个问题:既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置; 通过什么协议下载Linux内核和根文件系统   对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。  至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。  这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。2) 工作过程在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。  PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。 具体配置过程如下:首先是安装必要的服务,DHCPD,TFTP-SERVER,NFS(一般默认就有了)dhcpd和tftp-server都有对应的rpm,直接安装就可以了.# vi /etc/xinetd.d/tftp =============+==========+===========+============+============ service tftp {         disable = no (默认是yes,这里改成no,启用它)        socket_type             = dgram         protocol                = udp         wait                    = yes         user                    = root         server                  = /usr/sbin/in.tftpd         server_args             = -u nobody -s /tftpboot //-s 表示用/tftpboot作为tftp目录的根目录.         per_source              = 11         cps                     = 100 2         flags                   = IPv4 } tftp是由xinted来启动的,修改完后要记得service xinetd restart# vi /etc/dhcpd.conf =============+==========+===========+============+============ ddns-update-style interim;ignore client-updates;default-lease-time 21600;max-lease-time 43200;authourtative;next-server 192.168.1.103;subnet 192.168.1.0 netmask 255.255.255.0 {    option routers          192.168.1.1;    option subnet-mask      255.255.255.0;    range 192.168.1.1 192.168.1.100;    default-lease-time 21600;    max-lease-time 43200;    filename "/pxelinux.0";    option domain-name-servers 202.106.0.20;}这里的 pxelinux.0就是上面提到的bootstrap,上面已经指定了tftp的根目录,所以这里用相对路径.next-server 192.168.1.103;这句一开始我并没有加上,当要安装系统的机器启动以后,在查找pxelinux.cfg目录下的配置文件的时候,就死活找不到了.经过很长时间的等待,出现一个boot:的提示符,告诉我:can't load kernel image:linux,一开始以为是/tftpboot/pxelinux.cfg/default的配置文件有误,检查后没问题.google了半天,总算查到了一个帖子,说可能是dhcp3.0的一个bug,需要加上这个参数来指定DHCP SERVER的IP.修改配置文件加入此句后,重启dhcp,然后再重新启动客户机,这次速度大大加快,顺利通过.3 配置支持PXE  # mkdir /tftpboot # cp /usr/lib/syslinux/pxelinux.0 /tftpboot 把LINUX第一张安装光盘上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目录下(*.msg也可以不拷,重点是initrd.img和vmlinuz,没有内核是无法引导的) # cd /tftpboot # mkdir pxelinux.cfg # vi defaultdefault centos5prompt 1timeout 30label centos5 kernel vmlinuzappend ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount ramdisk_size=9216#append initrd=initrd.img devfs=nomount ramdisk_size=9216 这里的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安装中不用人工干预,自动按预设的参数安装.实现安装过程的全自动.4 配置NFS服务 # vi /etc/exports /root/inst      192.168.1.0/24(ro,sync) //这里是/root/inst 而不是/root/inst/# mkdir /home/iso 拷贝安装LINUX的ISO文件到这个目录 5 需要开启的系统服务 /dhcpd/network/nfs/portmap/syslog/tftp/xinetd/service dhcpd startservice portmap startservice nfs start最后附上ks文件的内容.installnfs --server=192.168.1.103 --dir=/root/instlang en_US.UTF-8keyboard usnetwork --device eth0 --bootproto static --ip 192.168.1.220 --netmask 255.255.255.0 --gateway 192.168.1.1  --nameserver 192.168.1.1#network --device eth0 --bootproto DHCProotpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.firewall --enabled --port=22:tcp#firewall --disabledauthconfig --enableshadow --enablemd5selinux --disabledtimezone --utc Asia/Shanghaibootloader --location=mbr --driveorder=sda --append="rhgb quiet"clearpart --allzerombr yesclearpart --linux --initlabelpart /boot --fstype ext2 --size=256part / --fstype ext3 --size=8192 part /opt --fstype ext3 --size=8192 part /usr --fstype ext3 --size=16384part swap --size=4096part /home --fstype ext3 --size=1 --grow reboot //加入这行后装完系统后可以自动重启,需要注意的是机器的启动顺序不能是网卡优先,否则会循环装系统........%packages --resolvedeps@ everythinggrubkernelkernel-devele2fsprogs 本文出自 “风吹云动” 博客,请务必保留此出处http://coolerfeng.blog.51cto.com/133059/48801... 全文

linux pxe 职场 休闲 linux系统

六个保证Linux安全常用的基本措施

如今linux系统安全变的越来越重要了,这里我想把我平时比较常使用的一些linux下的基本的安全措施写出来和大家探讨一下,让我们的linux系统变得可靠。1、BIOS的安全设置... 全文

Linux安全 linux系统安全

自动化构建Min Linux

 本片文章介绍在宿主机机上面通过bash脚本实现自动化构建Min Linux,从而了解linux系统的启动过程,当系统无法启动时可以有效定位出现错误的原因,在阅读本片文章之前建议先阅读这篇文章: http://urchin.blog.51cto.com/4356076/788394BASH 脚本代码如下:... 全文

熟悉linux启动 职场 休闲 构建linux系统

Linux下配置邮件服务器

 实验一:搭建Sendmail服务1.       配置DNS,添加MX记录# service named start# vi /etc/named.conf  zone “aaa.com” IN {        type master;        file “aaa.com.dns”;  }; # cd /var/named# ls# cp named.local aaa.com.dns   # vi aaa.com.dns     $ TTL   86400... 全文

邮件 配置 Linux下 服务器 linux

Linux 引导过程内幕

引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。 早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。让我们先从高级的视角来查看 Linux 引导过程,这样就可以看到整个过程的全貌了。然后将回顾一下在各个步骤到底发生了什么。在整个过程中,参考一下内核源代码可以帮助我们更好地了解内核源代码树,并在以后对其进行深入分析。... 全文

linux系统启动 linux 休闲 init 职场

在U盘上安装Linux

所谓在U盘上安装Linux,就是在U盘上放置一些文件,可以让电脑从U 盘启动linux(需要电脑支持从U盘启动)。这篇教程简单说一下怎么在U盘上安装DSL。主要是这个发行版小,50M左右,而且包含了该有的很多软件。前提条件下载DSL解压缩DSL执行syslinux安装boot loader启动前提条件好像需要U盘的文件系统格式是FAT。因为syslinux(具体作用请继续往下看)可能只支持FAT格式的文件系统。可以格式化U盘成FAT格式的。但是格式化之前请备份U盘上的数据。因为格式化以后以前的数据就丢失了。这样格式化:$mkdosfs -F 32 /dev/sda1 具体的对应U盘的设备名字可以用$fdisk -l 查看。下载DSL去[url]http://www.damnsmalllinux.org/[/url] 下载最新的DSL。注意要下载 zip压缩格式的,这是专门为方便在U盘上安装作的一个压缩包,文件名类似dsl-3.1-embedded.zip。解压缩DSLLinux需要有unzip这个软件来解压缩dsl-.*-.*.zip。在ubuntu上,U 盘会被自动mount在/media/usbdisk。那么,进入到你放置 dsl-.*-.*.zip的目录,执行:$unzip -d /media/usbdisk/ dsl-3.1-embedded.zip 这样,dsl-.*-.*.zip就被解压缩到U盘里了。执行syslinux安装boot loader前面说了,syslinux可能只支持FAT格式的文件系统(我没有实验其他文件系统)。如果是的话,继续我们的教程。当然,需要机器上有syslinux。没有的话,去 [url]http://www.kernel.org[/url] 下载,并且安装。然后,执行$syslinux -s /dev/sda1 同样,具体的对应U盘的设备名字需要自己查看。注意:如果是整个U盘格式化为FAT分区,可能需要执行$syslinux -s /dev/sda 启动重启电脑,进入bios,设置启动的设备。可能有的主板会有usb-pen和 usb-zip这两个选项。都试试看。我发现有的机器需要usb-pen而有的是usb-zip,ft。设置完bios,保存,重启。祝好运!!... 全文

安装Linux U盘 linux 休闲 职场

用Red Hat Enterprise Linux 搭建Java开发环境

其实用Red Hat Enterprise Linux搭建Java开发环境也并不困难,在下列出几个步骤,供参考: 1、挂载光盘[root@station25 ~]# mount /dev/cdrom /media/ mount: block device /dev/cdrom is write-protected, mounting read-only 2、配置yum源,并验证[rhel-debuginfo] name=Red Hat  baseurl=file:///media/Server enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [root@station25 ~]# yum update Loaded plugins: rhnplugin, security This system is not registered with RHN. RHN support will be disabled. rhel-debuginfo | 1.3 kB 00:00 rhel-debuginfo/primary | 732 kB 00:00 rhel-debuginfo 2292/2292 Skipping security plugin, no data Setting up Update Process No Packages marked for Update3、安装IDE其实也主要就是这几个东西(当然还有一些依赖包啥的,总共133M)java-1.6.0-openjdk.i386                 1:1.6.0.0-1.2.b09.el5     rhel-debuginfo java-1.6.0-openjdk-demo.i386            1:1.6.0.0-1.2.b09.el5     rhel-debuginfo java-1.6.0-openjdk-devel.i386           1:1.6.0.0-1.2.b09.el5     rhel-debuginfo java-1.6.0-openjdk-javadoc.i386         1:1.6.0.0-1.2.b09.el5     rhel-debuginfo java-1.6.0-openjdk-src.i386             1:1.6.0.0-1.2.b09.el5     rhel-debuginfo 然后安装  [root@station25 ~]# yum install java-* -y Loaded plugins: rhnplugin, security This system is not registered with RHN. RHN support will be disabled. Setting up Install Process Package java-1.4.2-gcj-compat-1.4.2.0-40jpp.115.i386 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package java-1.4.2-gcj-compat-devel.i386 0:1.4.2.0-40jpp.115 set to be updated rhel-debuginfo/filelists                                                                 | 2.3 MB     00:00      --> Processing Dependency: libgcj-devel >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: gcc-java >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: libgcj-devel >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: gcc-java >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: eclipse-ecj for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: /usr/lib/gcc/i386-redhat-linux/4.1.1/libgcj.spec for package: java-1.4.2-gcj-compat-devel --> Processing Dependency: /usr/lib/gcc/i386-redhat-linux/4.1.1/libgcj.spec for package: java-1.4.2-gcj-compat-devel ---> Package java-1.4.2-gcj-compat-javadoc.i386 0:1.4.2.0-40jpp.115 set to be updated ---> Package java-1.4.2-gcj-compat-src.i386 0:1.4.2.0-40jpp.115 set to be updated --> Processing Dependency: libgcj-src >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-src --> Processing Dependency: libgcj-src >= 4.0.0-0.42 for package: java-1.4.2-gcj-compat-src ---> Package java-1.6.0-openjdk.i386 1:1.6.0.0-1.2.b09.el5 set to be updated ---> Package java-1.6.0-openjdk-demo.i386 1:1.6.0.0-1.2.b09.el5 set to be updated ---> Package java-1.6.0-openjdk-devel.i386 1:1.6.0.0-1.2.b09.el5 set to be updated ---> Package java-1.6.0-openjdk-javadoc.i386 1:1.6.0.0-1.2.b09.el5 set to be updated ---> Package java-1.6.0-openjdk-src.i386 1:1.6.0.0-1.2.b09.el5 set to be updated --> Running transaction check ---> Package eclipse-ecj.i386 1:3.2.1-19.el5 set to be updated ---> Package gcc-java.i386 0:4.1.2-46.el5 set to be updated ---> Package libgcj-devel.i386 0:4.1.2-46.el5 set to be updated ---> Package libgcj-src.i386 0:4.1.2-46.el5 set to be updated --> Finished Dependency Resolution  Dependencies Resolved  ================================================================================================================  Package                               Arch         Version                        Repository              Size ================================================================================================================ Installing:  java-1.4.2-gcj-compat-devel           i386         1.4.2.0-40jpp.115              rhel-debuginfo          50 k  java-1.4.2-gcj-compat-javadoc         i386         1.4.2.0-40jpp.115              rhel-debuginfo          24 M  java-1.4.2-gcj-compat-src             i386         1.4.2.0-40jpp.115              rhel-debuginfo          19 k  java-1.6.0-openjdk                    i386         1:1.6.0.0-1.2.b09.el5          rhel-debuginfo          28 M  java-1.6.0-openjdk-demo               i386         1:1.6.0.0-1.2.b09.el5          rhel-debuginfo         2.2 M  java-1.6.0-openjdk-devel              i386         1:1.6.0.0-1.2.b09.el5          rhel-debuginfo         9.2 M  java-1.6.0-openjdk-javadoc            i386         1:1.6.0.0-1.2.b09.el5          rhel-debuginfo          20 M  java-1.6.0-openjdk-src                i386         1:1.6.0.0-1.2.b09.el5          rhel-debuginfo          25 M Installing for dependencies:  eclipse-ecj                           i386         1:3.2.1-19.el5                 rhel-debuginfo         7.9 M  gcc-java                              i386         4.1.2-46.el5                   rhel-debuginfo         2.9 M  libgcj-devel                          i386         4.1.2-46.el5                   rhel-debuginfo         1.4 M  libgcj-src                            i386         4.1.2-46.el5                   rhel-debuginfo          11 M  Transaction Summary ================================================================================================================ Install     12 Package(s)          Update       0 Package(s)          Remove       0 Package(s)          安装的过程中一共是安装了12个包:  Running Transaction   Installing     : libgcj-devel                                                                            1/12  error: failed to stat /media/RHEL_5.4 i386 DVD: No such file or directory   Installing     : libgcj-src                                                                              2/12    Installing     : java-1.4.2-gcj-compat-javadoc                                                           3/12    Installing     : java-1.6.0-openjdk-javadoc                                                              4/12    Installing     : java-1.6.0-openjdk                                                                      5/12    Installing     : gcc-java                                                                                6/12    Installing     : eclipse-ecj                                                                             7/12    Installing     : java-1.4.2-gcj-compat-devel                                                             8/12    Installing     : java-1.6.0-openjdk-devel                                                                9/12    Installing     : java-1.6.0-openjdk-src                                                                 10/12    Installing     : java-1.4.2-gcj-compat-src                                                              11/12    Installing     : java-1.6.0-openjdk-demo                                                                12/12   安装完毕以后,输入javac验证,出现以下信息就OK了 [root@station25 ~]# javac 用法:javac <选项> <源文件> 其中,可能的选项包括:   -g                         生成所有调试信息   -g:none                    不生成任何调试信息   -g:{lines,vars,source}     只生成某些调试信息   -nowarn                    不生成任何警告   -verbose                   输出有关编译器正在执行的操作的消息   -deprecation               输出使用已过时的 API 的源位置   -classpath <路径>            指定查找用户类文件和注释处理程序的位置   -cp <路径>                   指定查找用户类文件和注释处理程序的位置   -sourcepath <路径>           指定查找输入源文件的位置   -bootclasspath <路径>        覆盖引导类文件的位置   -extdirs <目录>              覆盖安装的扩展目录的位置   -endorseddirs <目录>         覆盖签名的标准路径的位置   -proc:{none,only}          控制是否执行注释处理和/或编译。   -processor <class1>[,<class2>,<class3>...]要运行的注释处理程序的名称;绕过默认的搜索进程   -processorpath <路径>        指定查找注释处理程序的位置   -d <目录>                    指定存放生成的类文件的位置   -s <目录>                    指定存放生成的源文件的位置   -implicit:{none,class}     指定是否为隐式引用文件生成类文件    -encoding <编码>             指定源文件使用的字符编码   -source <版本>               提供与指定版本的源兼容性   -target <版本>               生成特定 VM 版本的类文件   -version                   版本信息   -help                      输出标准选项的提要   -Akey[=value]              传递给注释处理程序的选项   -X                         输出非标准选项的提要   -J<标志>                     直接将 <标志> 传递给运行时系统   用vim编辑一个GoodsList.java的文件public class GoodsList {      /**      * @param args      */     public static void main(String[] args) {         System.out.println("\t购物清单");         System.out.print("商品名称\t");         System.out.print("购买数量\t");         System.out.print("商品单价\t");         System.out.print("金额\n");          System.out.print("鳄鱼夹克\t");         System.out.print("  1\t");         System.out.print("1900\t");         System.out.print("1900\n");          System.out.print("ipodMP4\t");         System.out.print("  2\t");         System.out.print("400\t");         System.out.print("800\n");     } } 然后执行如下命令:[root@station25 ~]# javac GoodsList.java  这里就可以看到生成的.class文件了-rw-r--r-- 1 root root       771 02-16 00:45 GoodsList.class -rw-r--r-- 1 root root       568 02-16 00:45 GoodsList.java 直接用java GoodsList就可以执行了 PS:反正我是不会Java的,这个方法也是我在和一个Java高手讨论Linux的时候随手实验的。本文出自 “捷哥的IT小屋” 博客,请务必保留此出处http://wzjxzht.blog.51cto.com/4866070/1134017... 全文

linux系统 Linux RedHat Java

Linux内核驱动fsync机制实现图解

在Linux内核中的IO模型基本分为4类:1、同步阻塞I/O2、同步非阻塞I/O3、异步阻塞I/O4、异步非阻塞I/O同步:应用显式地通过函数访问数据,在此函数返回时就会得到结果(成功或失败)。异步:应用会显示地通过函数提出访问或关注申请。数据到达时,硬件和驱动会通知应用,此时代码一般不在读写访问函数中,而是得到通知了再去有目的的访问数据。阻塞:在等待数据的过程中会休眠在此处,而非阻塞即函数不休眠立即返回,可执行接下来的代码。... 全文

linux Linux内核驱动 fsync机制

linux安装samba报错

 今天安装samba出现错误[root@localhost CentOS]# rpm -ivh samba-3.0.33-3.29.el5_5.1.i386.rpm warning: samba-3.0.33-3.29.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897error: Failed dependencies:        perl(Convert::ASN1) is needed by samba-3.0.33-3.29.el5_5.1.i386... 全文

linux linux安装 samba 休闲 职场

有关Linux升级的经验之谈

前言:当我们使用Linux一段时间以后,自然不会满足总是在没有任何变化的系统中工作,而是渴望能象在Windows系统中一样,不断对自己的Linux进行升级。另一方面,Linux本身就是一个开放的系统,每天都会有新的软件出现,Linux发行套件和内核也在不断更新。在这样的情况下,学会对Linux(包括系统本身和各种软件)进行升级就显得非常迫切了。--------------------------------------------------------------------... 全文

升级 Linux Windows linux系统 系统

linux内核启动的优化

linux内核启动需要时间,并且需要很多的时间,这是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作为bios和别的bios相比启动的特别快,因为它把硬件检测的任务交给了linux内核而不是bios,毕竟bios检测完了内核再检测是一种浪费,为了bios的性能,把工作推给内核是不负责任的行为吗?其实不是,实际上启动时最耗时的操作就是硬件检测和初始化,正是因为如此,linuxbios才把如此艰巨的任务避开,一并给了操作系统内核。... 全文

linux内核 任务 linux 工作 优化