??xml version="1.0" encoding="utf-8" standalone="yes"?>
主题Q查看linuxpȝ版本?2位的q是64位的 查看完整?/font> 作者:300second 旉Q?011-01-16 14:25
标题Q查看linuxpȝ版本?2位的q是64位的 作者:300second 旉Q?011-01-16 14:25
一?br />
[root@linuxzgf ~]#getconf LONG_BIT
[root@linuxzgf ~]#getconf WORD_BIT
Q?2位的pȝ中intcd和longcd一般都?字节Q?4位的pȝ中intcdq是4字节的,但是long已变成了8字节inuxpȝ中可?getconf WORD_BIT"?getconf LONG_BIT"获得word和long的位数?4位系l中应该分别得到32?4。)
二?br />
[root@linuxzgf ~]#uname -a
如果有x86_64是64位的Q没有就?2位的
后面是X686或X86_64则内核是64位的Qi686或i386则内核是32位的
三?br />
直接看看有没?lib64目目录的Ҏ?4位的pȝ会有/lib64?lib两个目录Q?2位只?lib一个?br />
四?br />
[root@linuxzgf ~]#file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
32-bitx32位的 linux, 如是64位的, 昄的是 64-bit
五?br />
[root@linuxzgf ~]#file /bin/cat
/bin/cat: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
32-bitx32位的 linux, 如是64位的, 昄的是 64-bit
六?br />
[root@linuxzgf ~]#uname -m
x86_64
3.# arch
x86_64
i686
七、查看cpu是多位?br />
[root@linuxzgf ~]#more /proc/cpuinfo
八?br />
[root@linuxzgf ~]# echo $HOSTTYPE
x86_64
getconf命oq可以获取系l的基本配置信息Q比如操作系l位敎ͼ内存大小Q磁盘大等?br />
$getconf -a 可以看到详细的系l信?/td>
标题Q?作者:dn833 旉Q?011-01-17 09:41
呵呵Ҏ真多啊~?/td>
标题Q?作者:hyliuhzau 旉Q?011-01-17 14:52
学习了,不错
标题Q?作者:corsair911 旉Q?011-01-19 09:58
好,收ؓq?/td>
标题Q?作者:qingwang 旉Q?011-01-19 12:16
:(pdd_11): 学习?/td>
标题Q?作者:信 旉Q?011-01-20 10:28
:(mars_25): 学习了~~
标题Q?作者:sdbaby 旉Q?011-01-21 14:55
C最单的命o:
uname -a :lol
标题Q?作者:|管新生?旉Q?011-01-24 11:39
:(pdd_23): 学习 学习
标题Q?作者:mervyn 旉Q?011-02-18 16:14
呉|法真多啊~~
标题Q?作者:sy02586751 旉Q?011-02-21 10:00
受益匪浅Q学习了?/td>
标题Q?作者:sylmdl 旉Q?011-02-22 09:49
学习了。多?/td>
]]>
Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
KernelQ?.6.27.48
IpQ?92.168.0.1
2、Client 端的环境
Windows XP PRO SP2
IpQ?92.168.0.2
二、OpenVPN 服务端安装过E?br />1、检?kernel 需要支?tun 讑֤Q需要加?iptables 模块?br />?tun 是否安装Q?br />代码Q?/p>
[root@localhost ~]# modinfo tun
filename: /lib/modules/2.6.27.48/kernel/drivers/net/tun.ko
description: Universal TUN/TAP device driver
author: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
license: GPL
alias: char-major-10-200
vermagic: 2.6.27.48 SMP mod_unload modversions 686 4KSTACKS
depends:
2、检查OpenSSL
如果需要启?SSL q接Q则需要先安装 OpenSSL。默认rhel4内都安装?OpenSSL Q如果没有请自行安装?/p>
3、下载安?Lzo
?http://www.oberhumer.com/opensource/lzo/download/ 下蝲最新版 lzo-2.03.tar.gz
代码Q?/p>
[root@localhost src]# tar zxvf lzo-2.03.tar.gz
[root@localhost src]# cd lzo-2.03
[root@localhost lzo-2.03]# ./configure
[root@localhost lzo-2.03]# make
[root@localhost lzo-2.03]# make check (q行查,此步骤可以省?
[root@localhost lzo-2.03]# make test (q行全面试Q此步骤可以省略)
[root@localhost lzo-2.03]# make install (试用rootw䆾安装)
4、下载安?OpenVPN
?http://openvpn.net/download.html 下蝲最新版?openvpn-2.1.2.tar.gz
代码Q?/p>
[root@localhost src]# tar zxvf openvpn-2.1.2.tar.gz
[root@localhost src]# cd openvpn-2.1.2
[root@localhost openvpn-2.1.2]# ./configure --prefix=/usr/local/openvpn \
--with-lzo-lib=/usr/local/lib \
--with-ssl-headers=/usr/include/openssl \
--with-ssl-lib=/lib
[root@localhost openvpn-2.1.2]# make
[root@localhost openvpn-2.1.2]# make install
5、生?vpn 服务端和客户端的证书和密?br />讄环境变量
Ҏ一Qexport 声明变量
代码Q?/p>
[root@localhost openvpn-2.1.2]# cd easy-rsa/2.0
[root@localhost 2.0]# export D=`pwd`
[root@localhost 2.0]# export KEY_CONFIG=$D/openssl.cnf
[root@localhost 2.0]# export KEY_DIR=$D/keys
[root@localhost 2.0]# export KEY_SIZE=1024
[root@localhost 2.0]# export KEY_COUNTRY=CN
[root@localhost 2.0]# export KEY_PROVINCE=SH
[root@localhost 2.0]# export KEY_CITY=SH
[root@localhost 2.0]# export KEY_ORG="dzh.com"
[root@localhost 2.0]# export KEY_EMAIL="me@dzh.com"
Ҏ二:~辑环境变量文g vars
代码Q?/p>
[root@localhost 2.0]# vi vars (按照上面的内容修改变量文仉的相应变量?
[root@localhost 2.0]# . vars
清理以前的ca证书和密?br />代码Q?/p>
[root@localhost 2.0]# ./clean-all
生成 CA
代码Q?/p>
[root@localhost 2.0]# ./build-ca
Generating a 1024 bit RSA private key
...............++++++
.....++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [SH]:
Locality Name (eg, city) [Shanghai]:
Organization Name (eg, company) [dzh.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [dzh.com CA]:
Name []:
Email Address [me@dzh.com]:
因ؓ已经在变量里讄q了Q所以直接回车就是默认g?
?openvpn 服务端生成key
代码Q?/p>
[root@localhost 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
.........................................++++++
.........++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [SH]:
Locality Name (eg, city) [Shanghai]:
Organization Name (eg, company) [dzh.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Name []:
Email Address [me@dzh.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/local/src/openvpn-2.1.2/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'SH'
localityName :PRINTABLE:'Shanghai'
organizationName :PRINTABLE:'dzh.com'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'me@dzh.com'
Certificate is to be certified until Aug 17 07:20:17 2020 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
为客L生成key
代码Q?/p>
[root@localhost 2.0]# ./build-key client1
Generating a 1024 bit RSA private key
....................................++++++
........++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [SH]:
Locality Name (eg, city) [Shanghai]:
Organization Name (eg, company) [dzh.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client1]:
Name []:
Email Address [me@dzh.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/local/src/openvpn-2.1.2/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CN'
stateOrProvinceName :PRINTABLE:'SH'
localityName :PRINTABLE:'Shanghai'
organizationName :PRINTABLE:'dzh.com'
commonName :PRINTABLE:'client1'
emailAddress :IA5STRING:'me@dzh.com'
Certificate is to be certified until Aug 17 07:24:46 2020 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
如果有多个客LQ可以?./build-key 依次生成不同的客Lkey?br />注意在进?Common Name (eg, your name or your server's hostname) []: 的输入时, 每个证书输入的名字必M同?/p>
生成 Diffie Hellman 参数
代码Q?/p>
[root@localhost 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
...............................+....+..........................+..............................................................+............+..............+.................................................................+.......................................+............................................+...........+..............+..........................................................................+.......................+.......................................+................................+...........................+........+....................+.+.+........................................+....++*++*++*
6、ؓ服务器端生成配置文g和服务启动脚?br />代码Q?/p>
[root@localhost openvpn-2.1.2]# mkdir /etc/openvpn
[root@localhost openvpn-2.1.2]# cp sample-config-files/server.conf /etc/openvpn
[root@localhost openvpn-2.1.2]# cp sample-scripts/openvpn.init /etc/init.d/openvpnd
注意Q这个默认的 openvpn.init 脚本里的openvpn应用E序的\径可能跟你实际安装的不一P需要更改的?br />[root@localhost openvpn-2.1.2]# vi /etc/init.d/openvpnd
脚本里Qopenvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn" 修改成实际安装的路径Q比如:openvpn_locations="/usr/local/openvpn/sbin/openvpn"
[root@localhost openvpn-2.1.2]# chkconfig --add openvpnd
[root@localhost openvpn-2.1.2]# cp easy-rsa/2.0/keys/ca.crt /etc/openvpn/
[root@localhost openvpn-2.1.2]# cp easy-rsa/2.0/keys/server.crt /etc/openvpn/
[root@localhost openvpn-2.1.2]# cp easy-rsa/2.0/keys/server.key /etc/openvpn/
[root@localhost openvpn-2.1.2]# cp easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/
7、启?openvpn 服务?br />代码Q?/p>
[root@localhost openvpn-2.1.2]# service openvpnd start
Starting openvpn: [ OK ]
[root@localhost openvpn-2.1.2]# tail /var/log/messages
Aug 20 15:50:29 localhost openvpn[20961]: OpenVPN 2.1.2 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] built on Aug 20 2010
Aug 20 15:50:29 localhost openvpn[20961]: NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Aug 20 15:50:29 localhost openvpn[20961]: Diffie-Hellman initialized with 1024 bit key
Aug 20 15:50:29 localhost openvpn[20961]: TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Aug 20 15:50:29 localhost openvpn[20961]: Socket Buffers: R=[109568->131072] S=[109568->131072]
Aug 20 15:50:29 localhost openvpn[20961]: ROUTE default_gateway=222.73.34.190
Aug 20 15:50:29 localhost openvpn[20961]: TUN/TAP device tun0 opened
Aug 20 15:50:29 localhost openvpn[20961]: TUN/TAP TX queue length set to 100
Aug 20 15:50:29 localhost openvpn[20961]: /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Aug 20 15:50:29 localhost kernel: tun0: Disabled Privacy Extensions
Aug 20 15:50:29 localhost openvpn[20961]: /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Aug 20 15:50:29 localhost openvpn[20961]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Aug 20 15:50:29 localhost openvpn[20966]: UDPv4 link local (bound): [undef]:1194
Aug 20 15:50:29 localhost openvpn[20966]: UDPv4 link remote: [undef]
Aug 20 15:50:29 localhost openvpn[20966]: MULTI: multi_init called, r=256 v=256
Aug 20 15:50:29 localhost openvpnd: succeeded
Aug 20 15:50:29 localhost openvpn[20966]: IFCONFIG POOL: base=10.8.0.4 size=62
Aug 20 15:50:29 localhost openvpn[20966]: IFCONFIG POOL LIST
Aug 20 15:50:29 localhost openvpn[20966]: Initialization Sequence Completed
Aug 20 15:50:34 localhost udevd[1278]: udev done!
[root@localhost openvpn-2.1.2]# ifconfig -a
Link encap:Ethernet HWaddr 00:26:55:1E:D8:9A
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::226:55ff:fe1e:d89a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:526 (526.0 b)
Interrupt:193 Memory:fa000000-fa012100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1754296 errors:0 dropped:0 overruns:0 frame:0
TX packets:1754296 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:165016597 (157.3 MiB) TX bytes:165016597 (157.3 MiB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
看到上面的信息就说明 openvpn 服务h了,openvpn 服务端配|完毕了?/p>
三、OpenVPN GUI For Windows 客户端安装过E?br />1、下载安装OpenVPN GUI For Windows
?http://openvpn.net/index.php/open-source/downloads.html 下蝲 openvpn-2.1.2-install.exe
注意: OpenVPN GUI 的版本要?OpenVPN Server 的版本配套?br />Windows下的安装q程׃具体说了Q安装大安会的。我使用默认路径安装在C:\Program Files\OpenVPN下了?/p>
2、配|客L配置文g
复制 sample-config 目录下的 client.ovpn ?config 目录下?br />用记事本打开配置文g client.ovpn Q修改一下部分:
remote my-server-1 1194 改ؓ remote 192.168.0.1 1194
cert client.crt 改ؓ cert client1.crt
key client.key 改ؓ key client1.key
把服务器端的认证证书下蝲下来
?nbsp; ca.crt client1.crt client1.key q三个文件从服务端下载到客户端的 config 目录里?/p>
3、启动客LGUI
打开“开?#8221;菜单----->“E序”----->“openvpn”----->“openvpn gui”Q在出来的程序界面里点击“链接”按钮
代码Q?/p>
C:\Documents and Settings\office>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : office
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter vpn:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V9
Physical Address. . . . . . . . . : 00-FF-FF-5D-70-E6
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.8.0.6
Subnet Mask . . . . . . . . . . . : 255.255.255.252
Default Gateway . . . . . . . . . :
DHCP Server . . . . . . . . . . . : 10.8.0.5
Lease Obtained. . . . . . . . . . : 2010q??0?16:47:39
Lease Expires . . . . . . . . . . : 2011q??0?16:47:39
Ethernet adapter local:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Eth
ernet NIC
Physical Address. . . . . . . . . : 00-1B-B9-5F-C3-58
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.9.21.74
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.9.21.254
DHCP Server . . . . . . . . . . . : 10.9.21.254
DNS Servers . . . . . . . . . . . : 114.80.136.14
114.80.157.11
Lease Obtained. . . . . . . . . . : 2010q??0?12:41:54
Lease Expires . . . . . . . . . . : 2010q??1?12:41:54
上面vpn 链接获取正确的ip地址Q就说明客户端已l和服务端链接成功了。要是需要客L操作pȝ启动p自动链接到服务端Q可以在windows的服务里扑ֈopenvpn服务Q设|ؓ“自动”可以了?/p>
本篇文章来源?Linux公社|站(www.linuxidc.com) 原文链接Q?a >http://www.linuxidc.com/Linux/2010-08/28264.htm
Linux创徏ftp用户
1. 安装vsftpd服务Q?br />在shell下运行yum install vsftpdQ即可安装成功;
2. 修改vsftpd的配|:
?etc/vsftpd/下找到vsftpd.conf文gQ修攚w认配|,包括监听地址和端口,是否打开tcp、psav模式{等Q配|比较简单,具体看我的文章中的vsftpd配置手册
3.启动vsftpd服务Q?br />q行service vsftpd start卛_Q或者运?etc/init.d/vsftpd start
4.为ftp建立用户和登录目?br />q个和linux建用户帐h一L
先用“useradd -d 目录?用户?#8221;建立一个到ftp目录的用户帐P然后在用passwd讄密码Q?
然后你就可以用你新徏的用户名和帐L录这个ftp了,ftp的登录方式是
ftp L名;
输入用户名;
输入密码?br />当然你用ftp工具也可以哦?
开启FTP
[root@huiyi ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
关闭FTP
[root@huiyi ~]# service vsftpd stop
Shutting down vsftpd: [ OK ]
?】FTP自动dq批量下?br />#!/bin/bash
ftp -n<<
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
!
?】FTP自动dq上传文?br />#!/bin/bash
ftp -n<<
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
Q?
http://steven2.blog.51cto.com/855881/284529
开启动
vi /etc/rc.local
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
rpm命o的一些基本参数选项如下Q?br />-i 安装所选择的一个或多个软g?br />-q 查询软g包系l或所选择的一个或多个软g?br />-e 删除所有选择的一个或多个软g?br />-u 把一个已l安装好的Y件包升到新版本
-v 验证已安装或已选择的一个或多个软g?/p>
安装RPM软g包的命o格式如下Q?br />rpm -i 【安装选项】【Y件包名字?nbsp; 安装选项一般选择“--nodeps”
e.gQ?rpm -ivh --nodeps mplayer-1.0-0.2.pre2.fr.i386.rpm
删除安装的RPM软g?br />rpm -e 【删除选项】【Y件包名字?/p>
e.g #rpm -e mplayer
升
e.gQ?rpm -uvh --nodeps mplayer-1.0-0.2.pre2.fr.i386.rpm
h
e.gQ?rpm -Fvh --nodeps mplayer-1.0-0.2.pre2.fr.i386.rpm
查询
1.查看pȝ中所有已l安装的包,要加参数-a :
e.g #rpm -qa
2.查询pȝ中已l安装的软gQ?br />e.g rpm -q【Y件名?
3. #rpm -ql 软g?查看已安装的rpm软g的位|?/p>
查询已安装Y件位|:
如果x询已安装软g位置的话?#8220;whereis 软g?#8221;来查找。:whereis java
You can check to see if a TFTP server is set up with the following command:
You should expect to see output similar to:
NOTE: Your version may be different than the one listed above. This is OK, the version above is just an example. If it is not setup, you can follow these steps:
The default root location for TFTP files is /tftpboot. |
http://blog.chinaunix.net/u/15200/showart_299136.html
%ftp L?IP /*dftp服务器,会提C入用户名和密?/
匿名dQ用户名输入Qanonymous 密码输入Q一个邮格式的L字符?/span>
FTP>ascii: 讑֮以ASCII方式传送文?~省?
FTP>bell: 每完成一ơ文件传?报警提示.
FTP>binary: 讑֮以二q制方式传送文?
FTP>bye: l止LFTPq程,q出FTP理方式.
FTP>case: 当ؓON?用MGET命o拯的文件名到本地机器中,全部转换为小写字?
FTP>cd: 同UNIX的CD命o.
FTP>cdup: q回上一U目?
FTP>chmod: 改变q端L的文件权?
FTP>close: l止q端的FTPq程,q回到FTP命o状? 所有的宏定义都被删?
FTP>delete: 删除q端L中的文g.
FTP>dir [remote-directory] [local-file] 列出当前q端L目录中的文g.如果有本地文?将l果写至本地文g.
FTP>get [remote-file] [local-file] 从远端主Z传送至本地L?
FTP>help [command] 输出命o的解?
FTP>lcd: 改变当前本地L的工作目?如果~省,p{到当前用LHOME目录.
FTP>ls [remote-directory] [local-file] 同DIR.
FTP>macdef: 定义宏命?
FTP>mdelete [remote-files] 删除一Ҏ?
FTP>mget [remote-files] 从远端主机接收一Ҏ件至本地L.
FTP>mkdir directory-name 在远端主Z建立目录.
FTP>mput local-files 本CZ一Ҏ件传送至q端L.
FTP>open host [port] 重新建立一个新的连?
FTP>prompt: 交互提示模式.
FTP>put local-file [remote-file] 本C个文件传送至q端L?
FTP>pwd: 列出当前q端L目录.
FTP>quit: 同BYE.
FTP>recv remote-file [local-file] 同GET.
FTP>rename [from] [to] 改变q端L中的文g?
FTP>rmdir directory-name 删除q端L中的目录.
FTP>send local-file [remote-file] 同PUT.
FTP>status: 昄当前FTP的状?
FTP>system: 昄q端Lpȝcd.
FTP>user user-name [password] [account] 重新以别的用户名dq端L.
FTP>? [command]: 同HELP. [command]指定需要帮助的命o名称。如果没有指?commandQftp 显C全部命令的列表?br />FTP>! ?ftp 子系l退出到外壳?/p>
Linux是一个多用户的操作系l。每个用L录系l后Q都会有一个专用的q行环境。通常每个用户默认的环境都是相同的Q这个默认环境实际上是一l环境变量的定义?/p>
如果你想查看某一个名U的环境变量Q命令是Qecho $环境变量名,比如Qecho $ORACLE_HOME
$ env
$ export TEST=”Test…” #增加一个环境变量TEST
$ export TEST=”Test…” #增加一个环境变量TEST
|
今天部v一个很单的JSPE序Q启动tomcat时出C面的提示信息
Using CATALINA_BASE: /software/apache-tomcat-6.0.18
Using CATALINA_HOME: /software/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /software/apache-tomcat-6.0.18/temp
Using JRE_HOME: /usr
用命?br style="box-sizing: border-box; " /> ps -ef|grep tomcat
查看没有tomcatq程?/p>
查看tomcat日志信息Q出C下面的错误:
WARNING: error instantiating 'org.apache.juli.ClassLoaderLogManager' referenced by java.util.logging.manager, class not found
java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager not found
>>No stacktrace available>>
WARNING: error instantiating '1catalina.org.apache.juli.FileHandler,' referenced by handlers, class not found
java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler,
>>No stacktrace available>>
Exception during runtime initialization
java.lang.ExceptionInInitializerError
>>No stacktrace available>>
Caused by: java.lang.NullPointerException
>>No stacktrace available>>
最l解军_法:
用命令设|JAVA_HOME环境变量
export JAVA_HOME=/software/jdk1.5.0_4/
q入 %tomcat%/bin/
./startup.sh
启动成功Q?/p>
Vi命o
Vi 的工作模?br />~辑模式netfilter/iptabels应用E序Q被认ؓ?Linux中实现包qo功能的第四代应用E序。netfilter/iptables包含?.4以后的内怸Q它可以实现防火墙、NATQ网l地址译Q和数据包的分割{功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表l构。netfilter/iptables 从ipchains和ipwadfmQIP防火墙管理)演化而来Q功能更加强大。下文将netfilter/iptabelsl一UCؓiptables?/p>
可以用iptables为Unix、Linux和BSD个h工作站创Z个防火墙Q也可以Z个子|创建防火墙以保护其它的pȝq_。iptales只读取数据包_不会l信息流增加负担Q也无需q行验证。要惌得更好的安全性,可以其和一个代理服务器Q比如squidQ相l合?/p>
基本概念
典型的防火墙讄有两个网卡:一个流入,一个流出。iptablesd入和流出数据包的报_它们与规则集(RulesetQ相比较Q将可接受的数据包从一个网卡{发至另一个网卡,对被拒绝的数据包Q可以丢弃或按照所定义的方式来处理?nbsp;
通过向防火墙提供有关Ҏ自某个源地址、到某个目的地或h特定协议cd的信息包要做些什么的指oQ规则控制信息包的过滤。通过使用iptablespȝ提供的特D命令iptables建立q些规则Qƈ其d到内核空间特定信息包qo表内的链中。关于添加、去除、编辑规则的命oQ一般语法如下:
iptables [-t table] command [match] [target]
1Q表QtableQ?nbsp;
[-t table]选项允许使用标准表之外的M表。表是包含仅处理特定cd信息包的规则和链的信息包qo表。有三个可用的表选项Qfilter、nat?mangle。该选项不是必需的,如果未指定,则filter作ؓ~省表。各表实现的功能如表1所C?br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />? 三种表实现的功能
<!--[if !vml]-->2Q命令(commandQ?nbsp;
command部分是iptables命o最重要的部分。它告诉iptables命o要做什么,例如插入规则、将规则d到链的末或删除规则。表2是最常用的一些命令及例子?nbsp;
? 命o的功能和样例
<!--[if !vml]--><!--[endif]-->
3Q匹配(matchQ?/p>
iptables命o的可选match部分指定信息包与规则匚w所应具有的特征Q如源地址、目的地址、协议等Q。匹配分为通用匚w和特定于协议的匹配两大类。这里将介绍可用于采用Q何协议的信息包的通用匚w。表3是一些重要且常用的通用匚w及示例说明?nbsp;
? 通用匚w及示例说?/p>
<!--[if !vml]--><!--[endif]-->
4Q目标(targetQ?/p>
目标是由规则指定的操作,对与那些规则匚w的信息包执行q些操作。除了允许用户定义的目标之外Q还有许多可用的目标选项。表4是常用的一些目标及CZ说明?/p>
除表4外,q有许多用于建立高规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE{?/p>
? 目标及示例说?br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />
应用iptables
与ipchains和ipfwadm不同的是Qiptables可以配置有状态的防火墙。iptables可以到源地址和目的地址、源端口和目的端口及入数据包的序Q即iptablesC了在现有q接中,哪些数据包已l被允许接收。这使得暂时性的端口只有在需要时才会被打开Qƈ且会拒绝所有永久性占用端口的hQ大大地加强了安全性。同Ӟ那些被更改了报头的数据包Q即使包含有一个被允许的目的地址和端口,也会被检到q被丢弃。此外,有状态的防火墙能够指定ƈC为发送或接收信息包所建立q接的状态。防火墙可以从信息包的连接跟t状态获得该信息。在军_新的信息包过滤时Q防火墙所使用的这些状态信息可以增加其效率和速度?/p>
1Q启动和停止iptables
下面正式用iptables来创建防火墙。启动和停止iptables的方法取决于所使用的Linux发行版,可以先查看所使用Linux版本的文档?/p>
一般情况下Qiptables已经包含在Linux发行版中Q运行iptables --version来查看系l是否安装了iptables。在Red Hat 9.0中,安装的版本是iptables v1.2.7a。如果系l没有安装iptablesQ则可以?a style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #256eb1; text-decoration: none; ">http://www.netfilter.org下蝲?/p>
2Q查看规则集
上面仅对iptables的用法做了一个简单介l,使用中可以运行man iptables来查看所有命令和选项的完整介l,或者运行iptables -help来查看一个快速帮助。要查看pȝ中现有的iptables规划集,可以q行以下命oQ?/p>
iptables --list
下面是没有定义规划时iptables的样子:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
如上例所C,每一个数据包都要通过三个内徏的链QINPUT、OUTPUT和FORWARDQ中的一个?/p>
filter是最常用的表Q在filter表中最常用的三个目标是ACCEPT、DROP和REJECT。DROP会丢弃数据包Q不再对其进行Q何处理。REJECT会把出错信息传送至发送数据包的主机?nbsp;
<!--[if !vml]--><!--[endif]-->
在Red Hat 9.0中,提供一个GUIE序来让用户对系l的安装U别q行单的配置。该工具的启动方法是Q主选单→pȝ讄→安全工具Q如?所C)。在此将安全U别设ؓ“高”Qƈ选择使用默认的防火墙规则。点ȝ定后Q再用iptables -list昄Q发现iptables与没有定义规则前已经有很大不同,如下所C:
[root@workstation root]# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Lokkit-0-50-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Lokkit-0-50-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
......
现实中一般不使用q个GUI工具Q因为它的功能有限,也不够透明。相比较而言QSuSE 9.0中相应的配置工具要好得多Q它可以在GUI下对防火墙进行更加细化的配置Q比如增加了IP转发和伪装等功能的配|)。尽这P一般还是自己来增加和删除规则?/p>
Q增加规?/p>
本例中的规则会L来自某一特定IP范围内的数据包,因ؓ该IP地址范围被管理员怀疑有大量恶意d者在zdQ?/p>
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j DROP
也可以很L地阻止所有流向攻击者IP地址的数据包Q该命oE有不同Q?/p>
# iptables -t filter -A OUTPUT -d 123.456.789.0/24 -j DROP
注意q里的A选项Q如前所qͼ使用它说明是l现有的链添加规则?/p>
4Q删除规?/p>
|络上的恶意d者L在变化的Q因此需要不断改变IP。假设一个网上攻击者{Ud新的IP地址Q而其老的IP地址被分配给一些清白的用户Q那么这时这些用L数据包将无法通过你的|络。这U情况下Q可以用带-D选项的命令来删除现有的规则:
# iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP
5Q缺省的{略
创徏一个具有很好灵zL、可以抵御各U意外事件的规则需要大量的旉。对于那些没有时间这样做的hQ最基本的原则是“先拒l所有的数据包,然后再允讔R要的”。下面来为每一个链讄~省的规则:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
q里选项-P用于讄铄{略Q只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息入。很多时候需要接收外部信息,则可使用以下命oQ?/p>
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j ACCEPT
6QSYN的?/p>
不能关闭所有端口,也不能只指定某些端口处于打开状态,那么怎样才能讄一个有效的规则Q既可以允许普通用h帔R过Q又可以L恶意d者访问网l呢Q?/p>
刚开始用iptables的h可以充分利用syn标识来阻止那些未l授权的讉K。iptables只检数据包的报_事实上,?iptables以外Q很多其它有用的数据包分析都是基于报头的。比如,在进行Web冲浪Ӟ一个请求从你的PC发送至其它地方的Web服务器上Q该服务器会响应hq发回一个数据包Q同时得Cpȝ上的一个时端口。与响应h不同的是Q服务器q不兛_所传送的内容。可以利用这U特Ҏ讄规则Q让它阻止所有没有经q你pȝ授权的TCPq接Q?/p>
# iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP
q里?i指的是网卡,-p则是指协议,--syn则表C带有syn标识讄的TCP数据包。SYN用于初始化一个TCPq接Q如果自己机器上没有q行M服务器,别h也就不会向你发送SYN数据包?/p>
7Q有状态的数据包的?/p>
前边的例子把每一个数据包看成是独立的Q而不是相互关联的Q依靠的是数据包的头信息。iptables会检查数据包的源和目的IP地址、源和目的端口、流入数据包的顺序号、TCP先后序的信息及头标讎ͼSYN、ACK、FIN、RST{)的状态,卛_会跟t整个连接会话,从而整个qoq程是相互关联的?/p>
8Q共享一个Internetq接
|络地址译和IP伪装都可以实现多C机共享一个Internetq接Q这个局域网可以是Linux和Windowspȝl成的多pȝ局域网。假讄在有一台机器,配有两个|卡Q其中eth0?#8220;公共”|卡Qeth1?#8220;U有”|卡Q即eth0被分配了一个静态的、可路由的IP地址Q而eth1被分配了一个私有的、不能\qIPQ该IP是属于该局域网子网的。要实现上述功能Q需要向nat和filter表中d一些链Q?/p>
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t filter -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT
q显CZ有状态的数据包检的价倹{请注意Q这里是如何实现入数据包只有在属于一个已l存在的q接时才被允许,而所有来自局域网内流向外的数据包则都允许通过。第一条规则让所有流出的信息看v来都是来自防火墙机器的,而ƈ不会昄出防火墙后面q有一个局域网?/p>
下面的命令ؓFORWARD和POSTROUTING链设|缺省的{略Q在使用伪装Ӟ有一个缺省的POSTROUTING DROP{略非常重要Q否则就可能有心怀恶意的用L破网兛_伪装自己的n份?/p>
# iptables -t filter -P FORWARD DROP
# iptables -t nat -P POSTROUTING DROP
下面的命令ؓ拨号q接讄Q它可以动态地分配IP地址Q?/p>
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
9Q运行服务器时的情况
有时也会把服务器攄在防火墙后面Q这时iptables需要知道从哪儿通过数据包,讄如下所C:
# iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j DNAT -to 192.168.0.10:80
# iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 25 -j DNAT -to 192.168.0.11:25
10Q规则的保存
到现在ؓ止,所有的例子都是在命令行中进行的。在试新的规则Ӟq是一U很好的方式Q但一旦测试结果o人满意,可以将它们保存本。可以?iptables-save 命o来实玎ͼ
$ iptables-save >; iptables-script
信息包过滤表中的所有规则都被保存在文giptables-script中。无Z时再ơ引导系l,都可以用iptables-restore命o规则集从该脚本文g恢复C息包qo表。恢复命令如下所C:
$ iptables-restore iptables-script
如果愿意在每ơ引导系l时自动恢复该规则集Q则可以上面指定的q条命o攑ֈM一个初始化Shell脚本中?/p>
下面的例子ƈ不是一个完整的脚本Q它只是描述了如何用变量及提供了一些附加的规则样例?/p>
#!/bin/sh
#为变量赋?nbsp;
IPTABLES=/sbin/iptables
LAN_NET="192.168.1.0/24"
IFACE= "eth0"
LO_IFACE="lo"
LO_IP="127.0.0.1"
#加蝲所需的内?nbsp;
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_nat
#~省情况下,IP转发都处于不可用状态,其讄为可用状态:
echo "1" >; /proc/sys/net/ipv4/ip_forward
#使IP的动态分配功能可?nbsp;
echo "1" >; /proc/sys/net/ipv4/ip_dynaddr
#每次重启q个脚本Ӟ最好清除以前所讄规则
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
#只允许在LAN中用SSHq接
$IPTABLES -A INPUT -s LAN_NET -p tcp --destination-port ssh -j ACCEPT
#允许loopback!
$IPTABLES -A INPUT -i lo -p all -j ACCEPT
$IPTABLES -A OUTPUT -o lo -p all -j ACCEPT
#丢弃那些入的U是来自本地机器的数据包
#丢弃那些出的不是出自本地机的数据包
$IPTABLES -A INPUT -i $IFACE -s $LAN_NET -j DROP
$IPTABLES -A OUTPUT -o $IFACE -s ! $LAN_NET -j DROP
#限制一些流出的信息
$IPTABLES -A OUTPUT -o eth0 -p tcp -dport 31337 -j DROP
$IPTABLES -A OUTPUT -o eth0 -p tcp -sport 31337 -j DROP
#此外Q?1335?7444?7665?0034 NetBus?704?37-139QsmbQ端口也应被止?/p>
Netstat -tln 命o是Linux查看端口使用情况
/etc/init.d/vsftp start 是用来启动ftp端口~Q?/p>
看文?etc/services
netstat
Linux查看端口查看已经q接的服务端口(ESTABLISHEDQ?/p>
netstat -a
Linux查看端口查看所有的服务端口QLISTENQESTABLISHEDQ?/p>
sudo netstat -ap
Linux查看端口查看所有的服务端口q显C对应的服务E序?/p>
nmap Q扫描类型>Q扫描参敎ͼ
例如Q?/p>
nmap localhost
nmap -p 1024-65535 localhost
nmap -PT 192.168.1.127-245
当我们用netstat -apn查看|络q接的时候,会发现很多类g面的内容Q?/p>
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 218.104.81.152Q?710 211.100.39.250Q?9488 ESTABLISHED 6111/1
昄q台开放了7710端口Q那么这个端口属于哪个程序呢Q我们可以用lsof -i Q?710命o来查询:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1990 root 3u IPv4 4836 TCP *Q?710 QLISTENQ?|管联盟
q样Q我们就知道?710端口是属于sshdE序的?/p> Redhat Linux中可以用netstat -an来查看系l用端口的情况Q以root用户dQ可以加-p参数Q查看对应程序的PID?/p>
Linux中常见程序的默认端口Q?/p>
ssh为TCP22 ftp(vsftp{?d模式?a style="border-bottom: rgb(0,85,153) 1px dotted; color: rgb(0,85,153); text-decoration: none" target="_blank">数据端口为TCP20Q命令端口ؓTCP21 httpd(apache{?默认端口为TCP80 dns(bind)默认端口为TCP53QUDP53 mail(sendmail{?默认ICMP为TCP25QPOP3?10 dhcp默认端口为UDP67 Netstat后面的意?/p>
·Proto昄q接使用的协议?span class="Apple-converted-space">
·RefCnt表示q接到本套接?/a>上的q程受?span class="Apple-converted-space">
·Types昄套接口的cd?span class="Apple-converted-space">
·State昄套接口当前的状态?span class="Apple-converted-space">
·Path表示q接到套接口的其它进E用的路径?/a>
Netstat -tln 命o是用来查看linux的端口用情况,
netstat -a 查看所有的服务端口
netstat -an | grep 端口?/a> 来检验下是不是已l打开了某某端?/p>
service xxx start 或?/etc/init.d/xxx start是开启xxx某端?/p>iptables -A INPUT --dport xxx -j DROP
iptables -A OUTPUT --dport xxx -j DROP是关闭xxx端口
d新的用户账号使用useradd命oQ其语法如下Q?
useradd 选项 用户?
其中各选项含义如下Q?
-c comment 指定一D|释性描q?
-d 目录 指定用户ȝ录,如果此目录不存在Q则同时使用-m选项Q可以创Z目录?
-g 用户l?指定用户所属的用户l?
-G 用户l,用户l?指定用户所属的附加l?
-s Shell文g 指定用户的登录Shell?
-u 用户?指定用户的用户号Q如果同时有-o选项Q则可以重复使用其他用户的标识号?
用户?指定新̎Ld名?
例如Q?
# useradd –d /usr/sam -m sam
此命令创Z一个用户samQ其?d?m选项用来为登录名sam产生一个主目录/usr/samQ?usr为默认的用户ȝ录所在的父目录)?
# useradd -s /bin/sh -g group –G adm,root gem
此命令新Z一个用户gemQ该用户的登录Shell?bin/shQ它属于group用户l,同时又属于adm和root用户l,其中group用户l是其主l?
增加用户账号是?etc/passwd文g中ؓ新用户增加一条记录,同时更新其他pȝ文g?etc/shadow, /etc/group{。这几个文g的内容在后面会做详细介绍?
Linux提供了集成的pȝ理工具userconfQ它可以用来对用戯̎可行统一理?
如果一个用L账号不再使用Q可以从pȝ中删除。删除用戯̎号就是要?etc/passwd{系l文件中的该用户记录删除Q必要时q删除用Lȝ录。删除一个已有的用户账号使用userdel命oQ其格式如下Q?
userdel 选项 用户?
常用的选项?rQ它的作用是把用Lȝ录一起删除?
例如Q?
# userdel sam
此命令删除用户sam在系l文件中Q主要是/etc/passwd, /etc/shadow, /etc/group{)的记录,同时删除用户的主目录?
修改用户账号是Ҏ实际情况更改用户的有兛_性,如用户号、主目录、用L、登录Shell{?
修改已有用户的信息用usermod命oQ其格式如下Q?
usermod 选项 用户?
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o{,q些选项的意义与useradd命o中的选项一P可以为用h定新的资源倹{另外,有些pȝ可以使用如下选项Q?
-l 新用户名
q个选项指定一个新的̎P卛_原来的用户名改ؓ新的用户名?
例如Q?
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为kshQ主目录改ؓ/home/zQ用L改ؓdeveloper?
用户理的一w要内Ҏ用户口o的管理。用戯̎号刚创徏时没有口令,但是被系l锁定,无法使用Q必Mؓ其指定口令后才可以用,即是指定空口o?
指定和修改用户口令的Shell命o是passwd。超U用户可以ؓ自己和其他用h定口令,普通用户只能用它修改自q口o。命令的格式为:
passwd 选项 用户?
可用的选项Q?
-l 锁定口oQ即用账号?
-u 口o解锁?
-d 使̎h口o?
-f 用户下次d时修改口令?
如果默认用户名,则修改当前用L口o?
例如Q假讑ֽ前用hsamQ则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超U用P可以用下列Ş式指定Q何用L口oQ?
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自q口oӞpasswd命o会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一_则将q个口o指定l用P而超U用户ؓ用户指定口oӞ׃需要知道原口o?
Zpȝ安全赯Q用户应该选择比较复杂的口令,例如最好?位长的口令,口o中包含有大写、小写字母和数字Qƈ且应该与姓名、生日等不相同?
为用h定空口oӞ执行下列形式的命令:
# passwd -d sam
此命令将用户sam的口令删除,q样用户sam下一ơ登录时Q系l就不再询问口o?
passwd命oq可以用-l(lock)选项锁定某一用户Q其不能登录,例如Q?
# passwd -l sam
use POSIX qw(strftime);
my $timeStr1 = strftime "%Y-%m-%d", localtime;
my $timeStr2 = strftime "%Y-%m-%d", localtime(time-86400); Q前一天)
print "$timeStr \n";
Ҏ二:
#!/usr/bin/perl
($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$savinglightday)
= (localtime(time));
$sec = ($sec < 10)? "0$sec":$sec;
$min = ($min < 10)? "0$min":$min;
$hour = ($hour < 10)? "0$hour":$hour;
$day = ($day < 10)? "0$day":$day;
$mon = ($mon < 9)? "0".($mon+1):($mon+1);
$year += 1900;
$today = "$day.$mon.$year|$hour:$min:$sec";
print $today."\n";
print time."\n";
如果要输Z天前的日期,time减去一天的U数Q?6400Q?/p>
(localtime(time-86400));
#!/usr/bin/perl
print &get_time(10)."\n";
sub get_time {
$interval = $_[0]*60;
($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$savinglightday)
= (localtime(time + $interval));
$sec = ($sec < 10)? "0$sec":$sec;
$min = ($min < 10)? "0$min":$min;
$hour = ($hour < 10)? "0$hour":$hour;
$day = ($day < 10)? "0$day":$day;
$mon = ($mon < 9)? "0".($mon+1):($mon+1);
$year += 1900;
return "$year-$mon-$day $hour:$min:$sec.00";
}
sub getTime(){
(my $sec,my $min,my $hour,my $day,my $mon,my $year,my $weekday,my $yeardate,my $savinglightday)
= (localtime(time));
$sec = ($sec < 10)? "0$sec":$sec;
$min = ($min < 10)? "0$min":$min;
$hour = ($hour < 10)? "0$hour":$hour;
$day = ($day < 10)? "0$day":$day;
$mon = ($mon < 9)? "0".($mon+1):($mon+1);
$year += 1900;
my $now = "$year$mon$day $hour:$min:$sec ";
return $now;
}
例如Qprint scalar (localtime)q个代码Q它输出的结果将cM于Thu Sep 16 23:00:06 1999。在列表上下文中Qlocaltime返回能够描q当前时间的一个元素列表:
($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime;
字段 ?/span>
$sec U,0 ~ 59
$min 分,0 ~ 59
$hour Ӟ0 ~ 23
$mday 月䆾中的日期Q?1 ~ 2 8? 9? 0? 1
$mon q䆾中的月䆾Q?0 ~ 11Q这里请特别要小心)
$year_off 1900q以来的q䆾。将1900加上q个数字Q得出正的4位数q䆾
$wday 星期几,0 ~ 6
$yday 一q中的第几天Q? ~ 364?65
$isdst 如果夏o时有效,则ؓ?/span>
不要?9附加llocaltimeq回的年份。它q回的年份是1900的偏U量。比如,?999q_q䆾?9;?000q中,它是100,?1999与该值相加,可以?000q以后正地产生q䆾。perl不存?000q问题,但是Q如果简单地?9(?0)附加l该q䆾Q就会导致程序中产生2000q问?/span>真正的年月日 是: $year_off + 1900 , $mon+1,$mday
上面q个函数常用Q但是返回值非ؕQ可L非怸好,让我们很Ҏ出错Q所以我推荐 strftime q个旉函数。当Ӟq有另一个模?DataTime 也相当不错。不q?strftime 非常?Linux 常用?date 的命令。strftime ?C ?POSIX 的一个功能函数。被包含q了 Perl 中。好?PHP 也是支持?/p>
使用h很容易,如下:
#!/usr/bin/perl use strict; use warnings; use POSIX qw(strftime); print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time));
会输?
2010-08-21 07:44:24
Strftime 旉?/strong> q个?date 的命令的字符格式是一L)
% H 时Q?0..23Q?br />% I 时Q?1..12Q?br />% k 时Q?..23Q?br />% l 时Q?..12Q?br />% M 分(00..59Q?br />% p 昄出AM或PM
% r 旉QhhQmmQss AM或PMQ,12时
% s ?970q???0Q?0Q?0到目前经历的U数
% S U(00..59Q?br />% T 旉Q?4时ӞQhh:mm:ssQ?br />% X 昄旉的格式(QH:QM:QSQ?br />% Z 时区 日期?br />% a 星期几的Uͼ Sun..SatQ?br />% A 星期几的全称Q?Sunday..SaturdayQ?br />% b 月的UͼJan..DecQ?br />% B 月的全称QJanuary..DecemberQ?br />% c 日期和时_ Mon Nov 8 14Q?2Q?6 CST 1999Q?br />% d 一个月的第几天Q?1..31Q?br />% D 日期QmmQddQyyQ?br />% h ?b选项相同
% j 一q的W几天(001..366Q?br />% m 月(01..12Q?br />% w 一个星期的W几天(0代表星期天)
% W 一q的W几个星期(00..53Q星期一为第一天)
% x 昄日期的格式(mm/dd/yyQ?br />% y q的最后两个数字( 1999则是99Q?br />% Y q_例如Q?970Q?996{)
常用的实?/strong>
得到日期的全?/p>
perl -MPOSIX -le 'print strftime "%c", localtime();'
Sat 21 Aug 2010 07:54:34 AM CST
得到普通的指定的日?/p>
perl -MPOSIX -le 'print strftime "%a %d %b %Y %H:%M:%S %Z", localtime();'
Sat 21 Aug 2010 07:54:11 CST
得到一个小时以前的旉
perl -MPOSIX -le 'print strftime "%c", localtime(time()-3600);'
Sat 21 Aug 2010 06:55:54 AM CST
得到一天前的时?/p>
perl -MPOSIX -le 'print strftime "%c", localtime(time()-86400);'
Fri 20 Aug 2010 07:56:36 AM CST
基本格式 :
* * * * * command
分 时 日 月 周 命o
W?列表C分??9 每分钟用*或?*/1表示
W?列表C小??3Q?表示0点)
W?列表C日??1
W?列表C月??2
W?列标识号星期0?Q?表示星期天)
W?列要q行的命?/span>
crontab文g的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表C每晚的21:30重启apache?/span>
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表C每??0?2日的4 : 45重启apache?/span>
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表C每周六、周日的1 : 10重启apache?/span>
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表C在每天18 : 00?3 : 00之间每隔30分钟重启apache?/span>
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表C每星期六的11 : 00 pm重启apache?/span>
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之_每隔一时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月?号与每周一到周三的11炚w启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一L4炚w启apache
名称 : crontab
使用权限 : 所有用?/span>
使用方式 :
crontab file [-u user]-用指定的文g替代目前的crontab?/span>
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-~辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录?/span>
crontab文g的格式:M H D m d cmd.
M: 分钟Q?-59Q?/span>
HQ小Ӟ0-23Q?/span>
DQ天Q?-31Q?/span>
m: 月(1-12Q?/span>
d: 一星期内的天(0~6Q?为星期天Q?/span>
cmd要运行的E序Q程序被送入sh执行Q这个shell只有USER,HOME,SHELLq三个环境变?/span>
说明 :
crontab 是用来让使用者在固定旉或固定间隔执行程序之用,换句话说Q也是cM使用者的时程表?u user 是指讑֮指定
user 的时E表Q这个前提是你必要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话Q就是表C
定自q时程表?/span>
参数 :
crontab -e : 执行文字~辑器来讑֮时程表,内定的文字编辑器?VIQ如果你想用别的文字~辑器,则请先设?VISUAL 环境变数
来指定用那个文字编辑器(比如?setenv VISUAL joe)
crontab -r : 删除目前的时E表
crontab -l : 列出目前的时E表
crontab file [-u user]-用指定的文g替代目前的crontab?/span>
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表C分钟,f2 表示时Qf3 表示一个月份中的第几日Qf4 表示月䆾Qf5 表示一个星期中的第几天。program 表示要执
行的E序?/span>
?f1 ?* 时表C每分钟都要执行 programQf2 ?* 时表C每时都要执行E序Q其馀cL
?f1 ?a-b 时表CZW?a 分钟到第 b 分钟q段旉内要执行Qf2 ?a-b 时表CZW?a 到第 b 时都要执行Q其馀cL
?f1 ?*/n 时表C每 n 分钟个时间间隔执行一ơ,f2 ?*/n 表示?n 时个时间间隔执行一ơ,光cL
?f1 ?a, b, c,... 时表C第 a, b, c,... 分钟要执行,f2 ?a, b, c,... 时表C第 a, b, c...个小时要执行Q其馀cL
使用者也可以所有的讑֮先存攑֜档案 file 中,?crontab file 的方式来讑֮时程表?/span>
例子 :
#每天早上7Ҏ行一?/bin/ls :
0 7 * * * /bin/ls
?12 月内, 每天的早?6 点到 12 点中Q每?个小时执行一?/usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下?5:00 寄一信l?alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每月每天的午?0 ?20 ? 2 ?20 ? 4 ?20 ?...执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意 :
当程序在你所指定的时间执行后Q系l会寄一信l你Q显CE序执行的内容,若是你不希望收到q样的信Q请在每一行空一g
后加?> /dev/null 2>&1 卛_
例子2 :
#每天早上6?0?/span>
10 6 * * * date
#每两个小?/span>
0 */2 * * * date
#晚上11点到早上8点之间每两个时Q早??/span>
0 23-7/2Q? * * * date
#每个月的4号和每个C拜的礼拜一到礼拜三的早?1?/span>
0 11 4 * mon-wed date
#1月䆾日早??/span>
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.
在登录系l输入用户名之前Q可以看CҎWELCOME......之类的信息,q里会显CLINUX发行版本名称Q内核版本号Q日期,机器信息{等信息Q要讄的话Q首先打开/etc/issue文gQ可以看到里面是q样一D?Welcome to <LINUX 发行版本名称>-kernel 后接各项参数\"
后接的参数的各项说明Q?/span>
\r 昄KERNEL内核版本P
\l 昄虚拟控制台号Q?/span>
\d 昄当前日期Q?span style="font-family: ">
\n 昄L名;
\m 昄机器cdQ即CPU架构Q如i386{;
了解了参数的意义Q就来修改,上面一D|q信息修改如下,可以昄所有必要的信息Q?/span>
Welcome to <LINUX 发行版本名称>-kernel \r (\l) \d \n \m.
要看效果QEXIT退出登录后看看Q?/span>
q有/etc/motdq个文gQ可以在里面加入自己喜欢的Q何欢q信息,q段信息会在登录成功后昄Q?/span>
从命令模式切换到输入模式Qa
输入模式切换到命令模式:ESC
末行模式Q?
保存Q?w
保存退出::wq
不保存强刉出::q!
保存强制退出::wq!
光标Ud到文仉Q[[
光标Ud到文件尾Q]]
下翻:ctrl+f
上翻:ctrl+b
查看文g权限的语句:
在终端输?
ls -l xxx.xxx Qxxx.xxx是文件名Q?
那么׃出现相类似的信息Q主要都是这些:
-rw-rw-r--
一共有10位数
其中Q?最前面那个 - 代表的是cd
中间那三?rw- 代表的是所有者(userQ?
然后那三?rw- 代表的是l群QgroupQ?
最后那三个 r-- 代表的是其他人(otherQ?
然后我再解释一下后面那9位数Q?
r 表示文g可以被读QreadQ?
w 表示文g可以被写QwriteQ?
x 表示文g可以被执行(如果它是E序的话Q?
- 表示相应的权限还没有被授?
现在该说说修Ҏ件权限了
在终端输入:
chmod o+w xxx.xxx
表示l其他h授予写xxx.xxxq个文g的权?
chmod go-rw xxx.xxx
表示删除xxx.xxx中组和其他人的d写的权限
其中Q?
u 代表所有者(userQ?
g 代表所有者所在的l群QgroupQ?
o 代表其他人,但不是u和g QotherQ?
a 代表全部的hQ也是包括uQg和o
r 表示文g可以被读QreadQ?
w 表示文g可以被写QwriteQ?
x 表示文g可以被执行(如果它是E序的话Q?
其中Qrwx也可以用数字来代?
r ------------4
w -----------2
x ------------1
- ------------0
行动Q?
+ 表示d权限
- 表示删除权限
= 表示使之成ؓ唯一的权?
当大安明白了上面的东西之后Q那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权?
-rw-r--r-- (644) 只有所有者才有读和写的权限,l群和其他h只有ȝ权限
-rwx------ (700) 只有所有者才有读Q写Q执行的权限
-rwxr-xr-x (755) 只有所有者才有读Q写Q执行的权限Q组和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读Q写Q执行的权限Q组和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权?