Linux
操作笔记
1. 常用操作1.1.Samba共享
NetBIOS
是一个为了便于开发基于局域网的资源共享应用程序而设计的
API
。之后,产生了基于
NetBIOS
的
NetBEUI
协议和
NBT(NetBIOS
OVER TCP/IP)
协议。
NBT
协议进一步发展为
SMB
和
CIFS
协议。
Windows
的局域网默认采用的就是
NetBEUI
协议,而
SAMBA
软件包所使用的就是
CIFS
协议,结果就是,装有
SAMBA
软件包的机器能够和
Windows
网络的机器进行通信,让没有
NetBEUI
协议的
UNIX
、
LINUX
机器在
SAMBA
的帮助下和
Windows
网络共享资源。
安装
Samba
组件
[root@ahpeng root] rpm -qa | grep samba
如果结果出现以下所示的
5
个软件包,则表示已经安装:
查询
/
连接宿主机的共享资源
smbclient
–
L WindowsHostName
smbclient //WindowsHostName/ShareName smbmount //Peter/Share /mnt/WinShare
启动
Samba
服务器
/sbin/service smb start
Linux
访问
Windows
客户机
smb
启动后,不用作任何设置你已经可以访问运行
Windows
的机器了。现在有两台机器,分别运行着
Linux
和
Windows98,
主机名称分别是
redhat
和
lily
。
lily
上有目录“
download
”,有打印机“
HP
”,目录设置为“完全访问”,密码是“
abc
”。
访问
lily
上的共享目录。
第一步,查看
lily
这台机器的的共享资源,“
smbclient -L //lily
”,当提示时,输入密码后会列出
lily
上可用的资源。
第二步,“
mkdir /mnt/download
”
,
在“
/mnt
”下建立一个目录。
第三步,“
mount -t smbfs -o
username=abc,password=abc //lily/download /mnt/download
”,把
lily
上的共享目录挂接到
redhat
的“
/mnt/download
”下面。接下来,你可以象使用本地硬盘那样访问该共享目录了。你也可以编辑“
/etc/rc.d/rc.local
”,把“
mount -t
smbfs -o username=abc,password=abc //lily/download /mnt/download
”添加到文件的末一行,这样,系统一启动,该共享目录也就挂接好了。
Windows
访问
linux
在 /etc/ 下找到 smb.conf ,用 VI 编辑器打开, vi /etc/smb.conf 或 vi /etc/samba/smb.conf [public]
#
让
windows
网上邻居能看到机器
netbios name = testsamba
#
让所有
guest
用户能访问
guest ok = yes
security = share
利用 samba-2.2.7a-7.9.0, 这是最根本的东西 , 不管用什么工具 , 掌握其原理才是最重要的 , 像网页制作一样 , 虽然工具很多 , 但一定要熟悉 HTML 语言 , 才能编的好的网页 ( 扯蛋 ! 呵呵 ) 装好 samba-2.2.7a-7.9.0 之后 , 会在 /etc/samba/ 下形成己个文件 smb.conf smbpasswd smbusers lmhosts, 如果没有其中的一个 , 你可以 touch 创建 修改 smb.conf 文件 我只做简单的说明 : guest ok 和 public 是一样的 ,read only 和 writable 是相反的 , 没什么区别 workgroup=( 工作组名子 , 填上你目前的 LAN 的工作组 ) netbios=( 最好是你的机器名 , 如果把改句注消 , 默认的是你 LINUX 机器名 , 不过 , 最好还是自己填上 ) client code page=936( 默认是 850,936 是简体中文的意思 , 这个要记住 , 难道不记得你 mount 你 windows 系统下的中文名子都是 ???, 就是因为你没有加 -o iocharset=cp936 的原因 !) guest account=nobody(guest 账号 , 这于你定义的共享文件颊有关 , 其中 nobody 在 smbusers 里有 ) security = SHARE( 有四个级别 , 不多说 ) encrypt passwords = Yes( 加密的密码 , win98/2000 传送的密码都是加密的 , 所以这里要 yes) 以上都是 [global] 的内容 , 其实 , 很多呢 , 水平有限不多说了 . 下面就是你要开的共享的东西 , 要说明的是 , 文件夹共享的属性取决于该文件颊在 LINUX 里的权限设定 [myxfc] comment = myxinfc path = /home/xinfc read only = No guest ok = Yes
[tmp] path = /home valid users = hehl write list = @staff read only = No guest ok = Yes 共享的设定其实很简单 , 主要是路径和权限的问题 , 这两个搞清楚了 , 应该没问题了
1.2.访问NTFS分区The Linux-NTFS Project http://data./sf-bak/rpm/rhel3.html 查看本机版本和内核
#uname –a
Linux LinuxSir01 2.4.18-14 # 1 Wed Sep 4 12:13:11 EDT 2002 i686
athlon
i386 GNU/Linux
下载结尾是
athlon.rpm
,注意选择是单
CPU
还是多
CPU
安装
#rpm -ivh *.rpm
mount 分区的一些具体工作: #mkdir /mnt/WinC #mount -t ntfs /dev/hda1 /mnt/WinC #cd /mnt/WinC
1.3.FTP命令全及代码集FTP 的命令行格式为: ftp -v -d -i -n -g [ 主机名 ] , 其中 -v 显示远程服务器的所有响应信息; -n 限制 ftp 的自动登录,即不使用; .n etrc 文件; -d 使用调试方式; -g 取消全局文件名
1.![cmd[args> :在本地机中执行交互 shell , exit 回到 ftp 环境,如: !ls*.zip 2.$ macro-ame[args] : 执行宏定义 macro-name 。 3.account[password] : 提供登录远程系统成功后访问系统资源所需的补充口令。 4.append local-file[remote-file] :将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。 5.ascii :使用 ascii 类型传输方式。 6.bell :每个命令执行完毕后计算机响铃一次。 7.bin :使用二进制文件传输方式。 8.bye :退出 ftp 会话过程。 9.case :在使用 mget 时,将远程主机文件名中的大写转为小写字母。 10.cd remote-dir :进入远程主机目录。 11.cdup :进入远程主机目录的父目录。 12.chmod mode file-name :将远程主机文件 file-name 的存取方式设置为 mode ,如: chmod 777 a.out 。 13.close :中断与远程服务器的 ftp 会话 ( 与 open 对应 ) 。 14.cr :使用 asscii 方式传输文件时,将回车换行转换为回行。 15.delete remote-file :删除远程主机文件。 16.debug[debug-value] :设置调试方式, 显示发送至远程主机的每条命令,如: deb up 3 ,若设为 0 ,表示取消 debug 。 17.dir[remote-dir][local-file] :显示远程主机目录,并将结果存入本地文件 18.disconnection :同 close 。 19.form format :将文件传输方式设置为 format ,缺省为 file 方式。 20.get remote-file[local-file] : 将远程主机的文件 remote-file 传至本地硬盘的 local-file 。 21.glob :设置 mdelete , mget , mput 的文件名扩展,缺省时不扩展文件名,同命令行的 -g 参数。 22.hash :每传输 1024 字节,显示一个 hash 符号 (#) 。 23.help[cmd] :显示 ftp 内部命令 cmd 的帮助信息,如: help get 。 24.idle[seconds] :将远程服务器的休眠计时器设为 [seconds] 秒。 25.image :设置二进制传输方式 ( 同 binary) 。 26.lcd[dir] :将本地工作目录切换至 dir 。 27.ls[remote-dir][local-file] :显示远程目录 remote-dir , 并存入本地文件 local-file 。 28.macdef macro-name :定义一个宏,遇到 macdef 下的空行时,宏定义结束。 29.mdelete[remote-file] :删除远程主机文件。 30.mdir remote-files local-file :与 dir 类似,但可指定多个远程文件,如 : mdir *.o.*.zipoutfile 。 31.mget remote-files :传输多个远程文件。 32.mkdir dir-name :在远程主机中建一目录。 33.mls remote-file local-file :同 nlist ,但可指定多个文件名。 34.mode[modename] :将文件传输方式设置为 modename , 缺省为 stream 方式。 35.modtime file-name :显示远程主机文件的最后修改时间。 36.mput local-file :将多个文件传输至远程主机。 37.newer file-name : 如果远程机中 file-name 的修改时间比本地硬盘同名文件的时间更近,则重传该文件。 38.nlist[remote-dir][local-file] :显示远程主机目录的文件清单,并存入本地硬盘的 local-file 。 39.nmap[inpattern outpattern] :设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如: nmap $1.$2.$3[$1 , $2].[$2 , $3] ,则传输文件 a1.a2.a3 时,文件名变为 a1 , a2 。 该命令特别适用于远程主机为非 UNIX 机的情况。 40.ntrans[inchars[outchars> :设置文件名字符的翻译机制,如 ntrans1R ,则文件名 LLL 将变为 RRR 。 41.open host[port] :建立指定 ftp 服务器连接,可指定连接端口。 42.passive :进入被动传输方式。 43.prompt :设置多个文件传输时的交互提示。 44.proxy ftp-cmd :在次要控制连接中,执行一条 ftp 命令, 该命令允许连接两个 ftp 服务器,以在两个服务器间传输文件。第一条 ftp 命令必须为 open ,以首先建立两个服务器间的连接。 45.put local-file[remote-file] :将本地文件 local-file 传送至远程主机。 46.pwd :显示远程主机的当前工作目录。 47.quit :同 bye ,退出 ftp 会话。 48.quote arg1 , arg2... :将参数逐字发至远程 ftp 服务器,如: quote syst. 49.recv remote-file[local-file] :同 get 。 50.reget remote-file[local-file] :类似于 get , 但若 local-file 存在,则从上次传输中断处续传。 51.rhelp[cmd-name] :请求获得远程主机的帮助。 52.rstatus[file-name] :若未指定文件名,则显示远程主机的状态, 否则显示文件状态。 53.rename[from][to] :更改远程主机文件名。 54.reset :清除回答队列。 55.restart marker :从指定的标志 marker 处,重新开始 get 或 put ,如: restart 130 。 56.rmdir dir-name :删除远程主机目录。 57.runique :设置文件名只一性存储,若文件存在,则在原文件后加后缀 .1 , .2 等。 58.send local-file[remote-file] :同 put 。 59.sendport :设置 PORT 命令的使用。 60.site arg1 , arg2... :将参数作为 SITE 命令逐字发送至远程 ftp 主机。 61.size file-name :显示远程主机文件大小,如: site idle 7200 。 62.status :显示当前 ftp 状态。 63.struct[struct-name] :将文件传输结构设置为 struct-name , 缺省时使用 stream 结构。 64.sunique :将远程主机文件名存储设置为只一 ( 与 runique 对应 ) 。 65.system :显示远程主机的操作系统类型。 66.tenex :将文件传输类型设置为 TENEX 机的所需的类型。 67.tick :设置传输时的字节计数器。 68.trace :设置包跟踪。 69.type[type-name] :设置文件传输类型为 type-name ,缺省为 ascii ,如 :type binary ,设置二进制传输方式。 70.umask[newmask] :将远程服务器的缺省 umask 设置为 newmask ,如: umask 3 71.user user-name[password][account] :向远程主机表明自己的身份,需要口令时,必须输入口令,如: user anonymous my@email 。 72.verbose :同命令行的 -v 参数,即设置详尽报告方式, ftp 服务器的所有响 应都将显示给用户,缺省为 on. 73.?[cmd] :同 help
1.4./etc/fstab文件使用1 fstab 文件的作用 文件 /etc/fstab 存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过” mount /directoryname ”命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或 tab 键分开。同时 fsck 、 mount 、 umount 的等命令都利用该程序。
2. fstab 文件格式 下面是 /etc/fatab 文件的一个示例行: fs_spec fs_file fs_type fs_options fs_dump fs_pass /dev/hda1 / ext2 defaults 1 1
fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说: IDE 设备一般描述为 /dev/hdaXN , X 是 IDE 设备通道 (a, b, or c) , N 代表分区号; SCSI 设备一描述为 /dev/sdaXN 。对于 NFS 情况,格式一般为 :
, 例如: `knuth.aeb.nl:/ ’。对于 procfs ,使用 `proc ’来定义。
fs_file - 该字段描述希望的文件系统加载的目录点,对于 swap 设备,该字段为 none ;对于加载目录名包含空格的情况,用 40 来表示空格。
fs_type - 定义了该设备上的文件系统,一般常见的文件类型为 ext2 (Linux 设备的常用文件类型 ) 、 vfat(Windows 系统的 fat32 格式 ) 、 NTFS 、 iso9600 等。
codepage 国家语言代码页
iocharset 字符集
fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用” defaults ”就可以满足需要。其他常见的选项包括: 选项 含义 ro 以只读模式加载该文件系统 sync 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 owner 允许所有者加载该文件系统 user 允许普通用户加载该文件系统 quota 强制在该文件系统上进行磁盘定额限制 noauto 不再使用 mount - a 命令(例如系统启动时)加载该文件系统
fs_dump - 该选项被” dump ”命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为 0
fs_pass - 该字段被 fsck 命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统” / ”对应该字段的值应该为 1 ,其他文件系统应该为 2 。若该文件系统无需在启动时扫描则设置该字段为 0
3. 示例文件 # /etc/fstab /dev/hda8 swap swap defaults 0 0 /dev/hda9 / ext2 defaults 1 1 /dev/hda6 /wine vfat defaults,codepage=936,iocharset=cp936 0 0 /dev/hda7 /winf vfat defaults,codepage=936,iocharset=cp936 0 0 /dev/hdb /cdrom iso9660 noauto,user 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0
1.5.Apache SSI 设置1 .编辑 httpd.conf vi conf/http.conf 2 .找到: #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml 改为: AddType text/html .shtml AddOutputFilter INCLUDES .shtml .html .htm 3 .设置目录的 Options +Includes 例: <Directory “/win/g”> Options Indexes FollowSymLinks Includes AllowOverride None Order allow,deny Allow from all </Directory> 4 .重新启动 Apache bin/apachectl restart
5 .扩展使用 <!--#exec cmd=”ls”-!>
1.6.apache打开或者关闭列目录功能问题分析:如果客户端发送一个 URL 请求, 但是相应的目录里面没有 DirectoryIndex 属性指定的文件名,那么可以使用 mod_autoindex 模块来列出该目录的文件名。 解决:编译 Apache 的时候包含 mod_autoindex 模块,然后参考下面的例子来设置 Apache 配置文件: 打开列目录功能: <Directory /path/to/directory> Options +Indexes </Directory> 关闭列目录功能: <Directory /path/to/directory> Options -Indexes </Directory>
1.7.开机自动启动samba最标准的做法 1. 在 /etc/init.d 中作一个如下内容的脚本 smbd
$smbspool=/var/spool/samba $piddir=/var/run $smbd=/usr/sbin/smbd $nmbd=/usr/sbin/nmbd
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then if [ -d $smbspool ]; then rm -f $smbspool/* fi $smbd -D $nmbd -D elif [ "x$1" = "xstop" ]; then kill `cat $piddir/smbd.pid` kill `cat $piddir/nmbd.pid` else echo "$0 start|stop" fi
2. 然后执行 ln -s /etc/init.d/smbd /etc/rc3.d/S99smbd ln -s /etc/init.d/smbd /etc/rc0.d/K01smbd
或者
chkconfig smb on 1.8.linux 下让JAVA生成的图形可显示开启 JAVA 图形显示功能 在 WEB 服务器启动选项加: -Djava=java.awt.headless=true
1.9.APACHE配置基本参数说明ServerTypeServerType standalone 定义服务器启动方式,默认是 standalone 方式,即有 apache 自己启动多个服务进程并管理他们接收客户端请求。 ServerType
1.10.Linux 特定变量参数表 14-2 特定 s h e l l 变量
1.11.自动检测WEB服务器状态并启动(Linux)
1.12.动态更新域名(www.3322.org)
1.12.
|
x |
x 为一行号,如 1 |
x , y |
表示行号范围从 x 到 y ,如 2 , 5 表示从第 2 行到第 5 行 |
/pattern/ |
查询包含模式的行。例如 / d i s k / 或 /[a-z]/ |
/pattern/pattern |
查询包含两个模式的行。例如 / d i s k / d i s k s |
/p a t t e r n / , x |
在给定行号上查询包含模式的行。如 / r i b b o n / , 3 |
x , / p a t t e r n / |
通过行号和模式查询匹配行。 3, / v d u / |
x , y ! |
查询不包含指定行号 x 和 y 的行。 1 , 2 ! |
sed 编辑命令
p |
打印匹配行 |
= |
显示文件行号 |
a \ |
在定位行号后附加新文本信息 |
i \ |
在定位行号后插入新文本信息 |
d |
删除定位行 |
c \ |
用新文本替换定位文本 |
s |
使用替换模式替换相应模式 |
r |
从另一个文件中读文本 |
w |
写文本到一个文件 |
q |
第一个模式匹配完成后推出或立即推出 |
l |
显示与八进制 A |
{ |
} 在定位行执行的命令组 |
n |
从另一个文件中读文本下一行,并附加在下一行 |
g |
将模式 2 粘贴到 /pattern |
y |
传送字符 |
n |
延续到下一输入行;允许跨行的模式匹配语句 |
sed –n ‘1,$l’
filename
例文件:
doc.txt
12332##DISO##45.12^M
00332##LPSO##23.11^M
01299##USPD##34.46^M
要求处理:
1)
用一个空格替换所有的
(##)
符号。
2)
删除起始域中最前面的
0(00)
。
3)
删除行尾控制字符
(^M)
。
以命令方式处理:
sed
‘s/##/ /g’ doc.txt|sed ‘s/^0*//g’ |sed ‘s/\^M/g w doc,log’
以文件方式处理:
doc.sed
#!/bin/sed
-f
#
name:doc.sed
# to
call:doc.sed doc.txt
# get rid of
the hash marks
s/##/
/g
# now get
rid of the leading zeros
s/^0*//g
# now get
rid of the carriage return
s/\^M//g
# now wirte
the result to file
w
doc.log
调用:
$ chmod u+x
doc.sed
$ ./doc.sed
doc.txt
以数据库查询为例,查询输出如下
(
保存到文件
sql.txt)
$ cat
sql.txt
Database Size(MB) Date Created
-----------------------------------
GOSOUTH
2244 12/11/97
TRISUD 5632
8/9/99
(2 rows
affected)
1)
使用
s/-*//g
删除横线
------
。
2)
使用
/^$/d
删除空行。
3)
使用
$d
删除最后一行
4)
使用
1d
删除第一行。
5)
使用
awk {print $1}
打印第一列。
处理第
1)
到
4)
我们用
sed
脚本完成
$ vi sql.sed
#!/bin/sed -f
# name:sql.sed
# to call:
sql.sed sql.txt
# delete line
-----
s/-*//g
# delete blank
rows
/^$/d
# delete last row
$d
# delete first
row
1d
# write the
result to file
w sql1.txt
$ chmod u+x
sql.sed
$ ./sql.sed
sql.txt
$ cat sql1.txt
GOSOUTH 2244 12/11/97
TRISUD 5632
8/9/99
$ awk ‘{print
$1}‘ sql1.txt
GOSOUTH
TRISUD
$ vi ok.txt
AC345
AC492169
AC9967
AC88345
$ sed ‘s/[0-9][0-9]*/& passed’ ok.txt
AC345 passed
AC492169 passed
AC9967 passed
AC88345 passed
把 sed 执行的结果传给变量
$ NAME=”It’s a go situation.”
$ REPLACE=”GO”
$
NEW_NAME=`echo $NAME|sed “s/go/$REPLACE/g”`
$ echo
$NEW_NAME
It‘s a GO
situation
注意,这里的 sed 的 command 不用 ’, 而用 ”
下面是一些一行命令集。( [ ] 表示空格, [ ] 表示 t a b 键)