- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
各类文?编辑器添加到右键ex:notepad++、Sublime Text、EditPlus等。新建一个***.reg的文件,即注册表文件,然后输入:REGEDIT4</p> <p>[HKEY_CLASSES_ROOT*Shell使用NotePad++编辑] [HKEY_CLASSES_ROOT*Shell使用NotePad++编辑Command] @="D:\Program Files\Notepad++\Notepad++.exe "%1""Windows Registry Editor Version 5.00</p> <p>[HKEY_CLASSES_ROOT*Shell使用NotePad++编辑] [HKEY_CLASSES_ROOT*Shell使用NotePad++编辑Command] @="D:\Program Files\Notepad++\Notepad++.exe "%1""二选一//最后一行是编辑器的路径,双斜杠是转义,不用动。关于上面?段文字的解释:Windows 95/98/ME/NT 4.0等的REG文件开头第一行规定必须是“REGEDIT4”。而Windows 2000/XP/Vista/7则是“Windows Registry Editor Version 5.00”,用以区分所使用的操作系统。
在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for deta”,运行“cat /var/log/messages | grep network”命令查看日志中出现的与network相关的信息,会发现下面输出语句:Nov 17 11:31:16 openstack network: Bringing up interface eth0: Error: no device found for connection 'eth0'.Nov 17 11:31:16 openstack network: [FAILED]Nov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack network: RTNETLINK answers: File existsNov 17 11:31:16 openstack systemd: network.service: control process exited, code=exited status=1Nov 17 11:31:16 openstack systemd: Failed to start LSB: Bring up/down networking.Nov 17 11:31:16 openstack systemd: Unit network.service entered failed state.从错误提示“Error: no device found for connection 'eth0'”可以确定是配置文件eth0的问题,打开查看/etc/sysconfig/network-scripts/ifcfg-eth0文件发现其中的MAC地址和ifconfig命令输出的MAC地址不一样,具体如下所示:[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0HWADDR=1A:E9:47:A5:75:C8TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noIPADDR=192.168.1.79PREFIX=24GATEWAY=192.168.1.1DNS1=192.168.1.1DNS2=8.8.8.8NAME=eth0UUID=ba670f0c-201a-483b-8379-c8c72c03ab27ONBOOT=yes[root@openstack ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.79 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::8081:a6ff:fe9d:5887 prefixlen 64 scopeid 0x20<link> ether 82:81:a6:9d:58:87 txqueuelen 1000 (Ethernet) RX packets 3426 bytes 394042 (384.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 57 bytes 9578 (9.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0所以只需将ifcfg-eth0中的HWADDR变量值改为ifconfig命令里显示的MAC地址即可。
本节内容:Linux下rsh配置rhost的方法。 1,安装前准备: 机器A:192.168.0.104(machine_a) (安装rsh server) 机器B:192.168.0.106(machine_b) (rsh client ) 2,首先确认机器A是否安装rsh包: 代码示例:[root@ahlinux root]# rpm -aq |grep rsh rsh-0.17-14 rsh-server-0.17-14 如果没有安装以上两个包,请找到相关软件安装(如果是LINUX,可以从安装碟中找到) 安装包: 代码示例: rpm -ivh rsh-0.17-5 (linux 操作系统) rpm -ivh rsh-server-0.17-5 (linux操作系统)或者在root下使用yum install rsh 和 yum install rsh-server来自动安装。注:使用yum安装rsh-server时xinetd也会被自动安装。 3,确认机器A是否启动rsh 服务: 方法一: 使用命令setup,查看service是否将 代码示例: rsh/rlogin/rexec 加上*,如果加上*表示可以启动。 /etc/rc.d/init.d/xinetd restart 或者 service xinetd restart 方法二:或使用chkconfig检查rsh/rlogin/rexe是有启动。rsh 属于xinetd服务,可以直接修改/etc/xinetd.d/rsh脚本文件来配置。 代码示例: service shell { disable = no socket_type = stream wait = no user = root log_on_success += USERID log_on_failure += USERID server = /usr/sbin/in.rshd } 对/etc/xinetd.d/rlogin 和/etc/xinetd.d/rexec进行类似的设置。 当然方法很多,目的就是使用rsh/rlogin/rexec服务能启动。 代码示例: /etc/rc.d/init.d/xinetd restart检查是否启动: rsh server 监听和TCP 是514。 代码示例:[root@ahlinux root]# netstat -an |grep 51 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN如果能看到514在监听说明服务器已经启动。 4, 配置机器A的hosts文件/etc/hosts例如:(貌似不能直接使用ip来rsh) 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.0.104 machine_a.localdomain machine_a 192.168.0.106 machine_b.localdomain machine_b 5,配置机器A的rsh server:修改/etc/securetty文件: 代码示例: echo rsh >>/etc/securetty echo rlogin >>/etc/securetty echo rexec >>/etc/securetty 如果打算用AAA作为rsh用户的话:先用AAA登录到机器A中进行以下操作: 代码示例: cd ~/ echo "machine_a AAA" >>.rhosts #允许machine_a 以AAA访问 ,即允许从rshserver所在的机器运行rshclient。 echo "machine_b AAA" >>.rhosts #允许machine_b以AAA访问。 echo +AAA >>.rhosts 允许所有的机器以AAA访问,貌似linux下不起作用。 重?rsh server. (service xinetd restart)6,测试与注意事项: rshserver机器作为rshclient的机器测试:代码示例:rsh -l AAA localhost ps -ef 或者 rsh -l AAA machine_a ps -ef 登录到B机器machine_b进行测试:代码示例:rsh -l AAA machine_a ps -ef 看是否能看到结果。 如果看到 代码示例:rsh -l AAA machine_a ps -ef Permission denied. 这是由于权权限问题,一般是由于 .rhosts没有配置正确。.rhosts一般位于rsh server服务器相对应账号目录下比如AAA(与.bash_profile在同一目录) rsh在执行命令有时会找不到。rsh 在调用命令是最好使用绝对路径。默认搜索路径为: 代码示例: [root@ahlinux etc]# rsh -l AAA 192.168.0.4 env |grep PATH PATH=/usr/bin:/bin hosts.equiv和.rhosts文件远程用户启动rlogin访问你的本地主机,此时做如下安全性检查:1,本地rlogind在本地/etc/passwd文件中寻找远程用户名,没有则拒绝访问。2,/etc/passwd中存在远程用户名,rlogind在/etc/hosts.equiv寻找远程主机名,找到则允许访问。3,/etc/hosts.equiv无远程主机名,rlogind在$HOME/.rhosts寻找远程主机名,找到且该项后无用户名则允许访问,找到且该项后有用户名,若远程用户名位于其中,则允许访问。注意,此处的$HOME是与远程用户同名的本机用户的主目录。 5,若?过了/etc/passwd的检查,但没有通过/etc/hosts.equiv或者$HOME/.rhosts的检查,远程用户给出口令可以登录本机,但无法使用rcp、rsh等。反之则可以使用rcp或者rsh。 6,/etc/hosts.equiv中的+意味着任意主机,此时与/etc/hosts无关。netterm下rlogin除root外的所有用户可以成功,solaris下简单的rlogin hostname同netterm,但是rlogin -l username hostname不成功。这个事实说明netterm下rlogin的时候,指定的参数实际上是远程主机的当前用户名。还说?hosts.equiv文件不支持rlogin -l username hostname,不支持root的rlogin。 7,rlogin -l username hostname和rlogin hostname的检查有点细微的差别,首先在/etc/passwd的检查中是以-l的参数为准的,没有-l参数才使用远程主机的当前用户名,所谓当前用户名是考虑了su出来的用户。其次,$HOME也是先以-l参数为准。第三,$HOME/.rhosts文件中的用户名不是针对-l参数来的,而是针对远程主机的当前用户名来的,但是对于这个远程主机的当前用户名,并不要?出现在/etc/passwd文件中。这第6条尤其重要,许多不成功的$HOME/.rhost就是因为对第6条的不了解。 8,$HOME/.rhosts文件的权限问题,chmod 0都没有影响,不过当时是处理root用户。对于一般用户,一定要保证.rhosts文件对于$HOME的属主是可读的。一般来说,这个文件最好chmod 400。对于root,如果不希望某个用户建立自己的.rhosts或者想替该用户建立.rhosts后不允许该用户自己修改,可以通过chown root .rhosts然后chmod 444 .rhosts实现。除了root,果$HOME/.rhosts文件的属主和$HOME的属主不一致,检查将失败。 9,$HOME/.rhosts文件中每行只跟一个用户名,若想多个指定,只好分多行指定用户名。 10,sco unix下$HOME/.rhosts中若用+代表主机,与其他Unix系统不同,这里的+没有任何特殊的意义,所以检查将失败。但是用户名仍然可以用+代表。并且sco unix下若root的.rhosts文件go+w,则检查失败。 11,建议man rhosts看看,各个系统有许多细微的差别。注意:1,直接使用 rsh 命令方式和使用 rsh 命令方式,其实本质上是不一样的,前者实质上调用的是 rlogin 程序,而后者才是真正意义上的 remote shell。所以,前者对应的是 rlogin 服务的端口,为 513;后者对应的才是 remote shell 服务的端口 514。而使用 rsh 命令方式时,具体过程还是有些特殊的,那就是,本地机先链接服务端的 514 端口,然后服务端还要以约定好的端口(1021~1023)与客户端相连,所以要顺利执行该命令的话,即要求服务端允许 514 端口链接,还要求本地机允许1021~1023端口的链接,这样就必须正确配置防火墙。如果没有在本地机允许1021~1023端口,则会出现如下错误: poll: protocol failure in circuit setup2,网上资料说rsh 连接不正常可以通过修改 /etc/securetty 文件,添加 rsh 和 rlogin 两行,并修改 /etc/pam.d/rsh 文件,注释掉 pam_rhosts_auth.so 那一行就可以。而事实证明,在没有开放相应端口的情况下,这么做了没有用。而按我上面说的4步做了以后,不做这两条也完全可以。所以,这两条对我的系统完全不必要。以上所说的只对普通用户(非root)有效,若是对root用户,上面的设置还不能实现无密码访问,甚至都可能连不上。对root用户,应增加以下两条:1,必须要在 /etc/securetty 中添加上 rsh 和 rlogin 才?分别使用两个服务。2,必须要在 /root/.rhosts 中加入等价的主机名或IP,这些机子才能无密码访问该机器。
我们上传东西的时候,由于文件过大而不能上传,或者不给上传,最明显的就是发邮件了,附件最大5M,有的10M。如果超过了就郁闷了。这个时候,如果能把压缩的东西,分割开来就比较爽了,windows下面我想大家知道怎么分割,利用winrar,winzip图型化设置压缩出来的块的大小。但是在linux下面有没有这样的方法了,linux下面有rar命令,有zip命令,windows下面这二种方式可以分割压缩,我想linux下面绝对也是可?的。下面是我尝试过程的记录:一,rar分卷压缩和合并解压rar -h我们会发现以下参数,要创建多大的卷。v Create volumes with size autodetection or list all volumesv<size>[k,b] Create volumes with size=<size>*1000 [*1024, *1]查看复制打印?[zhangy@BlackGhost awksed]$ rar a -v5m google.rar Google_Maps_API.doc //-v和5m之间不要有空格 RAR 3.92 Copyright (c) 1993-2010 Alexander Roshal 10 Feb 2010 Shareware version Type RAR -? for help Evaluation copy. Please register. Creating archive google.rar Adding Google_Maps_API.doc Calculating the control sum Creating archive google.part2.rar ... Google_Maps_API.doc Calculating the control sum Creating archive google.part3.rar ... Google_Maps_API.doc OK Calculating the control sum Done [zhangy@BlackGhost awksed]$ unrar x google.part1.rar //合并并解压 UNRAR 3.90 freeware Copyright (c) 1993-2009 Alexander Roshal Extracting from google.part1.rar Extracting Google_Maps_API.doc Extracting from google.part2.rar ... Google_Maps_API.doc 76% Extracting from google.part3.rar ... Google_Maps_API.doc OK All OK 二,zip分卷压缩和合并解压zip -h2你会发现,分卷参数-s,意思是说分割成多大的卷Splits (archives created as a set of split files):-s ssize create split archive with splits of size ssize, where ssize nmn number and m multiplier (kmgt, default m), 100k -> 100 kB下面的意思是说如果是分卷的了,用 -s 0 --out把分卷合成一个If input is split, output will default to same split sizeUse -s=0 or -s- to turn off splitting to convert split to single file:zip in_split_archive -s 0 --out out_single_file_archive用zip来分卷压缩时,他必须是.zip的形势,他的流程是这样的,先把一般文件压缩成.zip的文件,然后在将.zip的文件分成多少块,如果你不这样坐呢,会提示错误的。[zhangy@BlackGhost awksed]$ zip -s 4m Google_Maps_API.doczip error: Invalid command arguments (archive name must end in .zip for splits)查看复制打印?[zhangy@BlackGhost awksed]$ zip google.zip Google_Maps_API.doc //先压缩不然就报上面的错 adding: Google_Maps_API.doc(deflated 12%) [zhangy@BlackGhost awksed]$ zip -s 4m google.zip --out ziptest //分卷 copying: Google_Maps_API.doc [zhangy@BlackGhost awksed]$ zip ziptest -s 0 --out google_bak.zip //这样合卷有问题 copying: Google_Maps_API.doc [zhangy@BlackGhost awksed]$ cat ziptest.z* > google_bak.zip //利用cat来合卷 [zhangy@BlackGhost awksed]$ unzip google_bak.zip //解压 上面呢用zip来分卷是没有问题的,但是合卷的时候就有问题了,zip -s 0 --out这样的方式,合出来的卷,大约只有分卷前的一半,这就搞的我很无语了,并且解压的时候,提示我输入密码,在次无语,只好有cat来合并了,还好合并后,解压没有任何问题。三,利用split来分卷,cat来合并分卷我花了很长时间去研究tar的参数,研究了好长时间,还是没有找到可以分卷的参数,英语还是不过关啊,唉。不过我们可以借助split来分卷[zhangy@BlackGhost awksed]$ tar czvf google.tar.gz Google_Maps_API.doc Google_Maps_API.doc [zhangy@BlackGhost awksed]$ split -d -b 4m google.tar.gz [zhangy@BlackGhost awksed]$ cat x* > google_bak.tar.gz [zhangy@BlackGhost awksed]$ tar zxvf google_bak.tar.gz Google_Maps_API.doc 分卷压缩上图说明1,google.part1.rar等,是rar分卷压缩后的结果2,x00,x01等是利用split来分卷后的结果3,ziptest.zip,ziptest.z01等是利用zip来分卷后的结果。我始终相信tar 可以直接进行分卷的。只不过我没有找到而已,下面是tar的参数,含有翻译查看复制打印? 主操作模式: -A, --catenate, --concatenate 追加 tar 文件至归档 -c, --create 创建一个新归档 -d, --diff, --compare 找出归档和文件系统的差异 --delete 从归档(非磁带!)中删除 -r, --append 追加文件至归档结尾 -t, --list 列出归档内容 --test-label 测试归档卷标并退出 -u, --update 仅追加比归档中副本更新的文件 -x, --extract, --get 从归档中解出文件 操作修饰符: --check-device 当创建增量归档时检查设备号(默认) -g, --listed-incremental=文件处理新式的 GNU 格式的增量备份 -G, --incremental 处理老式的 GNU 格式的增量备份 --ignore-failed-read当遇上不可读文件时不要以非零值退出 -n, --seek 归档可检索 --no-check-device 当创建增量归档时不要检查设备号 --occurrence[=NUMBER] 仅处理归档中每个文件的第 NUMBER个事件;仅当与以下子命令 --delete, --diff, --extract 或是 --list中的一个联合使用时,此选项才有效。而且不管文件列表是以命?行形式给出或是通过 -T 选项指定的;NUMBER 值默认为 1 --sparse-version=MAJOR[.MINOR]设置所用的离散格式版本(隐含--sparse) -S, --sparse 高效处理离散文件 重写控制: -k, --keep-old-files 解压时不要替换存在的文件 --keep-newer-files不要替换比归档中副本更新的已存在的文件 --no-overwrite-dir 保留已存在目录的元数据 --overwrite 解压时重写存在的文件 --overwrite-dir解压时重写已存在目录的元数据(默认) --recursive-unlink 解压目录之前先清除目录层次 --remove-files 在添加文件至归档后删除它们 -U, --unlink-first 在解压要重写的文件之前先删除它们 -W, --verify 在写入以后尝试校验归档 选择输出流: --ignore-command-error 忽略子进程的退出代码 --no-ignore-command-error将子进程的非零退出代码认为发生错误 -O, --to-stdout 解压文件至标准输出 --to-command=COMMAND将解压的文件?过管道传送至另一个程序 操作文件属性: --atime-preserve[=METHOD]在输出的文件上保留访问时间,要么通过在读取(默认 METHOD=‘replace’)后还原时间,要不就不要在第一次(METHOD=‘system’)设置时间 --delay-directory-restore 直到解压结束才设置修改时间和所解目录的权限 --group=名称 强制将 NAME作为所添加的文?的组所有者 --mode=CHANGES 强制将所添加的文件(符号)更改为权限CHANGES --mtime=DATE-OR-FILE 从 DATE-OR-FILE 中为添加的文件设置mtime -m, --touch 不要解压文件的修改时间 --no-delay-directory-restore取消 --delay-directory-restore 选项的效果 --no-same-owner 将文件解压为您所有 --no-same-permissions从归档中解压权限时使用用户的掩码位(默认为普通用户服务) --numeric-owner 总是以数字代表用户/组的名称 --owner=名称 强制将 NAME作为所添加的文件的所有者 -p, --preserve-permissions, --same-permissions解压文件权限信息(默认只为超级用户服务) --preserve 与 -p 和 -s 一样 --same-owner 尝试解压时保持所有者关系一致 -s, --preserve-order, --same-order为解压至匹配归档排序名称 设备选择和切换: -f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备 --force-local即使归档文件存在副本还是把它认为是本地归档 -F, --info-script=名称, --new-volume-script=名称在每卷磁带最后运行脚本(隐含 -M) -L, --tape-length=NUMBER 写入 NUMBER × 1024 字节后更换磁带 -M, --multi-volume 创建/列出/解压多卷归档文件 --rmt-command=COMMAND 使用指定的 rmt COMMAND 代替 rmt --rsh-command=COMMAND 使用远程 COMMAND 代替 rsh --volno-file=文件 使用/更新 FILE 中的卷数 设备分块: -b, --blocking-factor=BLOCKS 每个记录 BLOCKS x 512 字节 -B, --read-full-records 读取时重新分块(只对 4.2BSD 管道有效) -i, --ignore-zeros 忽略归档中的零字节块(即文件结尾) --record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512 选择归档格式: -H, --format=FORMAT 创建指定格式的归档 FORMAT 是以下格式中的一种: gnu GNU tar 1.13.x 格式 oldgnu GNU 格式 as per tar <= 1.12 pax POSIX 1003.1-2001 (pax) 格式 posix 等同于 pax ustar POSIX 1003.1-1988 (ustar) 格式 v7 old V7 tar 格式 --old-archive, --portability等同于 --format=v7 --pax-option=?键字[[:]=值][,关键字[[:]=值]]...控制 pax 关键字 --posix 等同于 --format=posix -V, --label=TEXT 创建带有卷名 TEXT的归档;在列出/解压时,使用 TEXT作为卷名的模式串 压缩选项: -a, --auto-compress 使用归档后缀来决定压缩程序 -I, --use-compress-program=PROG通过 PROG 过滤(必须是能接受 -d选项的程序) -j, --bzip2 通过 bzip2 过滤归档 --lzma 通过 lzma 过滤归档 --no-auto-compress do not use archive suffix to determine thecompression program -z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档 -Z, --compress, --uncompress 通过 compress 过滤归档 -J, --xz filter the archive through xz --lzop 通过 lzop 过滤归档 本地文件选择: --add-file=文件 添加指定的 FILE 至归档(如果名字以 -开始会很有用的) --backup[=CONTROL] 在删除前备份,选择 CONTROL 版本 -C, --directory=DIR 改变至目录 DIR --exclude=PATTERN 排除以 PATTERN 指定的文件 --exclude-caches 除标识文件本身外,排除包含CACHEDIR.TAG 的目录中的内容 --exclude-caches-all 排除包含 CACHEDIR.TAG 的目录 --exclude-caches-under 排除包含 CACHEDIR.TAG的目录中所有内容 --exclude-tag=文件 除 FILE 自身外,排除包含 FILE的目录中的内容 --exclude-tag-all=文件 排除包含 FILE 的目录 --exclude-tag-under=文件 排除包含 FILE的目录中的所有内容 --exclude-vcs 排除版本控制系统目录 -h, --dereference跟踪符号链接;将它们所指向的文件归档并输出 --hard-dereference 跟踪硬链接;将它们所指向的文件归档并输出 -K, --starting-file=MEMBER-NAME从归档中的 MEMBER-NAME 成员处开始 --newer-mtime=DATE 当只有数据改变时比较数据和时间 --no-null 禁用上一次的效果 --null 选项 --no-recursion 避免目录中的自动降级 --no-unquote 不以 -T 读取的文件名作为引用结束 --null -T 读取以空终止的名字,-C 禁用 -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE只保存比 DATE-OR-FILE 更新的文件 --one-file-system 创建归档时保存在本地文件系统中 -P, --absolute-names 不要从文件名中清除引导符‘/’ --recursion 目录递归(默认) --suffix=STRING 在删除前备份,除非被环境变量SIMPLE_BACKUP_SUFFIX覆盖,否则覆盖常用后缀(‘’) -T, --files-from=文件 从 FILE中获取文件名来解压或创建文? --unquote 以 -T读取的文件名作为引用结束(默认) -X, --exclude-from=文件 排除 FILE 中列出的模式串 文件名变换: --strip-components=NUMBER 解压时从文件名中清除 NUMBER个引导部分 --transform=EXPRESSION, --xform=EXPRESSION使用 sed 代替 EXPRESSION 来进行文件名变换 文件名匹配选项(同时影响排除和包括模式串): --anchored 模式串匹配文件名头部 --ignore-case 忽略大小写 --no-anchored 模式串匹配任意‘/’后字符(默认对 exclusion 有效) --no-ignore-case 匹配大小写(默认) --no-wildcards 逐字匹配字符串 --no-wildcards-match-slash 通配符不匹配‘/’ --wildcards 使用通配符(默认对 exclusion ) --wildcards-match-slash通配符匹配‘/’(默认对排除操作有效) 提示性输出: --checkpoint[=NUMBER] 每隔 NUMBER个记录显示进度信息(默认为 10 个) --checkpoint-action=ACTION 在每个检查点上执行 ACTION --index-file=文件 将详细输出发送至 FILE -l, --check-links只要不是所有链接都被输出就打印信息 --no-quote-chars=STRING 禁用来自 STRING 的字符引用 --quote-chars=STRING 来自 STRING 的额外的引用字符 --quoting-style=STYLE 设置名称引用风格;有效的 STYLE值请参阅以下说明 -R, --block-number 每个信息都显示归档内的块数 --show-defaults 显示 tar 默认选项 --show-omitted-dir 列表或解压时,列出每个不匹配查找标准的目录 --show-transformed-names, --show-stored-names显示变换后的文件名或?档名 --totals[=SIGNAL] 处理归档后打印出总字节数;当此SIGNAL 被触发时带参数 -打印总字节数;允许的信号为: SIGHUP,SIGQUIT,SIGINT,SIGUSR1 和 SIGUSR2;同时也接受不带 SIG 前缀的信号名称 --utc 以 UTC 格式打印文件修改信息 -v, --verbose 详细地列出处理的文件 -w, --interactive, --confirmation每次操作都要求确认 兼容性选项: -o 创建归档时,相当于 --old-archive;展开归档时,相当于 --no-same-owner 其它选项: -?, --help 显示此帮助列表 --restrict 禁用某些潜在的有危险的选项 --usage 显示简短的用法说明 --version 打印程序版本 长选项和相应短选项具有相同的强制参数或可选参数。 除非以 --suffix 或 SIMPLE_BACKUP_SUFFIX 设置备份后缀,否则备份后缀就是“~”。 可以用 --backup 或 VERSION_CONTROL 设置版本控制,可能的值为: none, off 从不做备份 t, numbered 进行编号备份 nil, existing 如果编号备份存在则进行编号备份,否则进行简单备份 never, simple 总是使用简单备份
例如:一个文件5556字节,可以这样写find /root -size -5557c -size +5555c -exec ls -ld {} ;即查找大于5555字节小于5557字节的文件,以上查找的是/root 目录find /root -size -500k -size +50k -exec ls -ld {} ;查找 小于500K,大于50K的文件
步骤一,开机时随便按下键盘,进入以下菜单 步骤二: 选择第一项,按e键进行修改步骤三,定位到 ro(linux 16 or linuxefi)步骤四:把ro改成 “rw init=/sysroot/bin/sh”. 完成之后按 “Ctrl+x” 现在你可以进入单用户模式了依次输入以下命令进行root密码修改,修改完成之后强制重启即可。 chroot /sysroot/passwd roottouch /.autorelabel]
在使用Windows 2008远程登录功能时,如果需要进行多用户登录,可以采用以下配置方法: 首先要启用远程桌面这一功能:右击“我的电脑”→ 属性 → 远程配置 → 远程桌面,就可以配置相应的远程桌面功能了。 一、 提高数据显示的优先级。 默认情况下,在远程桌面服务中,如果碰到打印或者传输文件等作业,此时用户的远程会话就可能被冻结。只有在这些作业完成后才能够恢复。这也就是说,打印或者文件等传输作业具有更高的优先级别。这对于系统工程师维护远程服务器不是很方便。为此系统管理员可能希望能够提高远程桌面数据显示的优先级别,以保障远程维护的稳定性。 在Win2008版本中,就有一个为远程桌面显示数据优先级别的设置选项。根据这个特性,系统工程师可以为键盘、鼠标、显示等数据提供比其它虚拟通道通信量更高的优先级别。通过这个设置,就可以保障远程桌面的服务与打印文件传输服务和平共处。虚拟通道通信量(如文件打印)不会对系统管理员与远程会话的交互带来不利的影响。 ?不过这里需要注意的是,远程会话的优先级别也不能够设置的很高,不然的话,会对其他用户正常访问服务器带来不利的影响。这里就有一个相互均衡的过程。一般来说,显示数据优先化特性使用的带宽比例最好控制在60:40左右。根据不同的情况,可以做出适当的调整。这个比例表明,60%的带宽专门用与显示和输入数据;而30%的带宽专门用与其他通信流量。不过需要注意的是,这个比例并不是一成不变的。需要根据远程服务器的类型做出适当的调整。如远程服务器是一台打印服务器,此时显然需要将专门用于显示和输入数据的带宽比例降低。如果需要调整这个比例,需要更改服务器注册表中的关键字:FlowControlChargePostCompression。顾名思义,这个键值主要根据预先压缩字节或者后压缩字节来确定带宽。 二、 禁用Session 0,提高远程桌面访问的安全系数。 在以前的版本中,远程桌面访问需要用到控制会话Session0。除了交互式登陆会话之外,Session也是所有服务在其中运行的会话。可见这个会话的重要性。但是,这个会话后来证明有很大的安全隐患。让某些服务运行在驻留交互式登陆的相同绘画中就给攻击者提供了一个攻击的机会。为此Session0 控制会话就成为了攻击者试图提升其权利的恶意代理?目标。 在2008中,对此作了一些改善。将Session0会话调整为不可交互的会话。也就是说,在2008种,等系统管理员开启远程桌面连接建立交互式会话时,系统不再提供Session0,而直接提供Session1会话。向下一个并行的远程桌面访问用户提供Session2会话。通过这种改变之后,确实提高了远程桌面访问的安全性与性能。不过这里笔者需要提醒的是,微软禁用了Session0会话的交互式特性之后,也带来了一些副作用。如只允许在同一时间最多两个远程桌面会话的连接。在以前的版本中,服务器允许两个远程桌面会话和一个远程控制台会话。现在将Session0会话改为了不可交互的会话之后,在2008中就最多只允许两个并行的远程桌面会话,这不允许远程控制台会话。这在减少会话数量的同时,提高了远程桌面服务的性能。 三、 让远程连接的画面反映在多个显示器上。 遇到一些复杂问题时,可能需要多个专家进行会诊。此时就需要将远程桌面显示在多个监视器上,以方便各个专家解决问题。要实现这个需求的话,就需要使用到Win2008的监视器延伸特性。监视器延伸,简单的说,就是将远程桌面的会话同时显示在多个监控器上。每个用户面前都有一个监视器,便于用户观察远程桌面显示的结果。 不过在Win2008种,要使用个特性有一些前提条件。如要求各个监视器必须采用相同的分辨率、各个监控器的总分辨率不能够超过4096*2048、各个监视器必须水平排列。对监视器的数量没有限制。不过由于有总分辨率的限制,为此监视器数量越多,其分辨率就越低。这无疑是对监视器数量的一个变相的限制。 默认?况下,这个特性是没有启用的。如果系统工程师需要启用这个特性的话,首先需要确保各个监视器满足上面所规定的条件。检视后如果满足的话,则可以在命令行中使用下面的命令来启用监视器延伸的特性:mstsc.exe /span。 四、 自定义合适的分辨率。 在远程桌面连接过程中,很可能客户端与服务器端的分辨率设置是不同的。在这种情况下,系统管理员看起来特别的累,也会影响系统的显示性能。在以前的版本中,默认只提供两种分辨率。此时系统工程师只能够将就。在Win2008中,系统管理员可以根据自己所使用显示器的分辨率,对远程桌面需要使?的分辨率进行设置,而不需要受到远程服务器所使用分辨率的限制。 不过在使用这个特性时,需要注意,不要将分辨率设置的很高。因为分辨率越高,意味着在传输过程中需要的带宽就越多。而且上面笔者谈到过,在使用监视器延伸特性时,虽然对于监视器的数量没有严格的限制,但是对他们使用的分辨率的总合有限制。如果这里分辨率设置的比较高,那么可以同时使用的监视器数量就相对少了。如果需要使用监控器延伸特性时,在调整分辨率时就需要注意这个限制。 如果需要更改分辨率,可以通过更改配置文件或者直接使用命令行来完成。通常情况下,如果远程访问所?用的客户端是固定的,那么直接更改配置文件可能比较合适。因为下次还需要使用时,这个分辨率设置还可以用。如果系统工程师是临时借用了他人的主机来进行远程访问,此时采用命令行设置比较合理。因为这往往是一次性的。如果要使用命令行方式的,话,可以使用如下命令:mstsc.ext /w:1600 /h:1200。这个命令就将分辨率设置为了1600*1200。 五、 暂时关闭不需要的服务以提高性能。 在远程服务器上,可能开有很多服务。但是某些服务可能是暂时不用的。如远程服务器上有一个DNS服务。不过这个DNS服务是备用的。此时如果需要对这台服务器?行远程桌面连接时,那么可以考虑在连接上之后,现将这些不用的服务暂停掉。这可以节省服务器带宽的消耗,省下更多的带宽为远程桌面会话所用。根据上面60:40的原则,省下来的带宽不仅可以提高远程桌面的显示效率,而且还可以提高其它正在运行的作业,如打印文件作业的性能。这可以弥补由于采用了远程桌面会话给服务器造成的负面影响。 不过这里要特别提醒一点,在断开远程桌面连接之前,需要将这个暂时停止的服务重新启用。在实际工作中,不少系统工程师只记得暂停服务,但却忘了将这个暂停的服务重新开启,结果造成了很多不必要的麻烦。 打开 控制面板 → 管理工具 → 终端服务(Terminal Services) → 终端服务配置(Terminal Services Configuration) 1、(修改可以同时登陆的人数,包括自己,默认为2个,如果只需要另外一个人远程登陆你的电脑的话,比如mm或gg,那么这一步就不用做了,直接跳到第二步)连接(Connections):RDP-tcp 点右键 → 属性 → 网络适配器(Network Adapter) → 最大连接数 → 自己修改数目。 2、配置(Edit settings):终端服务器授权模式(Terminal Services licensing mode) → 点右键 → 属性 → 常规 → 限制每个用户只能使用一个会话(Restrict each user to a single session),去掉前面的勾 → 确定。到这里就可以多用户登录了。如果设置没有生效,重启一下(试过了,生效d)。 3、为防止恶搞,阻止远程用户终止控制台管理员。开始 → 运行 → gpedit.msc → 计算机配置 → 管理模板 → Windows组件(Windows Components) → 终端服务(Terminal Services) → 终端服务器(Terminal Server) → 连接(Connections) → 拒绝将已经登录到控制台会话的管理员注销(Deny logoff of an administrator logged in to the console session),右击 → 属性 → 启用。(重启生效) 远程桌面的使用对很多用户来说并不陌生,尤其是对网络管理员来说更是熟悉,因为几乎每天都会做这样的操作。所以对远程桌面的优化是很必要的,希望上述介绍的内容对大家能有所帮助。
windows2008作为微软服务器家族的操作系统,在电脑启动时沿用了必须按Ctrl+Alt+Delete的组合键才可以登录电脑,这给许多用户带来了不少的麻烦,那么可以不可以禁用呢?其实非常简单,下面来看看操作步骤吧。1、点桌面任务栏的“开始-->运行”在弹出的窗口中输入gpedit.msc 。2、在组策略编辑器的左框内依次序展开(点前面的“+”号)-->计算机配置-->Windows设置-->安全设置-->本地策略,这时在本地策略下面可见到有“安全选项”,点击“安全选项”在右侧的框内找到“交互式登录:不要按CTRL+ALT+DEL”。3、右键点击“交互式登录:不?按CTRL+ALT+DEL”,在弹出的菜单中点“属性”,在属性选项卡中点击“已启用”前的圆圈以选取它。确认“已启用”前面的圆圈中在一黑色小点后,点击“确定”,然后关闭窗口。这样以后启动计算机时就不必按“CTRL+ALT+DEL”组合键登陆了。想试试自己设置的成不成功,赶紧重新开机试试吧,保证那个烦人的组合键登录不再出现。
注意:切换的前提条件,centOS已安装过图形化界面程序才可以,像centos最小化安装是不支持的!如果在图形界面下,按:Ctrl+Alt+F2进入如下命令行界面如果在命令行界面下,按:Ctrl+Alt+F2进入如下图界面:
忘记Centos的root密码是件很头疼的事,但如果你此已经在系统里面,那就很容易解决,直接输入命令#passwd root 就可以重新更改新的root密码了!但如果无法进入系统,那就需要进入单用户模式下修改root的密码了!我的测试系统为Centos6.4x86_64下面给出我的一些实际成功测试过程:一、首先开机的时候进入Centos的画面按Esc,然后进入下面的界面:二、然后按键盘的"e"键,出现下面界面:三、用键盘上的方向键移动光标至第二项,然后再按“e”键,会出现下面界面: 先输入一个空格键,然后再输入数字1,按回车;或者输入空格键,再输入single,按回车。然后会出现下面界面:四、是的,你没有看错,?实是这个界面,然后按键盘的“b”键,重启系统,然后就进入单用户模式了,进入系统后输入#passwd root,就可以重新更改root密码了,然后重启系统就Ok了:
Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加:#!/bin/bashval=`expr 2 + 2`echo "Total value : $val"运行脚本输出:Total value : 4两点注:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下?。算术运算符先来看一个使用算术运算符的例子:#!/bin/sha=10b=20val=`expr $a + $b`echo "a + b : $val"val=`expr $a - $b`echo "a - b : $val"val=`expr $a * $b`echo "a * b : $val"val=`expr $b / $a`echo "b / a : $val"val=`expr $b % $a`echo "b % a : $val"if [ $a == $b ]thenecho "a is equal to b"fiif [ $a != $b ]thenecho "a is not equal to b"fi运行结果:a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a is not equal to b注意:乘号(*)前边必须加反斜杠()才能实现乘法运算;if...then...fi 是条件语句?后续将会讲解。算术运算符列表运算符说明举例+加法`expr $a + $b` 结果为 30。-减法`expr $a - $b` 结果为 10。*乘法`expr $a * $b` 结果为 200。/除法`expr $b / $a` 结果为 2。%取余`expr $b % $a` 结果为 0。=赋值a=$b 将把变量 b 的值赋给 a。==相等。用于比较两个数字,相同则返回 true。[ $a == $b ] 返回 false。!=不相等。用于比较两个数字,不相同则返回 true。[ $a != $b ] 返回 true。注意:条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]。关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字。先来看一个关系运算符的例子:#!/bin/sha=10b=20if [ $a -eq $b ]thenecho "$a -eq $b : a is equal to b"elseecho "$a -eq $b: a is not equal to b"fiif [ $a -ne $b ]thenecho "$a -ne $b: a is not equal to b"elseecho "$a -ne $b : a is equal to b"fiif [ $a -gt $b ]thenecho "$a -gt $b: a is greater than b"elseecho "$a -gt $b: a is not greater than b"fiif [ $a -lt $b ]thenecho "$a -lt $b: a is less than b"elseecho "$a -lt $b: a is not less than b"fiif [ $a -ge $b ]thenecho "$a -ge $b: a is greater or equal to b"elseecho "$a -ge $b: a is not greater or equal to b"fiif [ $a -le $b ]thenecho "$a -le $b: a is less or equal to b"elseecho "$a -le $b: a is not less or equal to b"fi运行结果:10 -eq 20: a is not equal to b 10 -ne 20: a is not equal to b 10 -gt 20: a is not greater than b 10 -lt 20: a is less than b 10 -ge 20: a is not greater or equal to b 10 -le 20: a is less or equal to b关系运算符列表运算符说明举例-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 true。-ne检测两个数是否相等,不相等返回 true。[ $a -ne $b ] 返回 true。-gt检测左边的数是否大于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。-lt检测左边的数是否小于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。-ge检测左边的数是否大等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。-le检测左边的数是否小于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true。布尔运算符先来看一个布尔运算符的例子:#!/bin/sha=10b=20if [ $a != $b ]thenecho "$a != $b : a is not equal to b"elseecho "$a != $b: a is equal to b"fiif [ $a -lt 100 -a $b -gt 15 ]thenecho "$a -lt 100 -a $b -gt 15 : returns true"elseecho "$a -lt 100 -a $b -gt 15 : returns false"fiif [ $a -lt 100 -o $b -gt 100 ]thenecho "$a -lt 100 -o $b -gt 100 : returns true"elseecho "$a -lt 100 -o $b -gt 100 : returns false"fiif [ $a -lt 5 -o $b -gt 100 ]thenecho "$a -lt 100 -o $b -gt 100 : returns true"elseecho "$a -lt 100 -o $b -gt 100 : returns false"fi运行结果:10 != 20 : a is not equal to b 10 -lt 100 -a 20 -gt 15 : returns true 10 -lt 100 -o 20 -gt 100 : returns true 10 -lt 5 -o 20 -gt 100 : returns false布尔运算符列表运算符说明举例!非运算,表达式为 true 则返回 false,否则返回 true。[ ! false ] 返回 true。-o或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。-a与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。字符串运算符先来看一个例子:#!/bin/sha="abc"b="efg"if [ $a = $b ]thenecho "$a = $b : a is equal to b"elseecho "$a = $b: a is not equal to b"fiif [ $a != $b ]thenecho "$a != $b : a is not equal to b"elseecho "$a != $b: a is equal to b"fiif [ -z $a ]thenecho "-z $a : string length is zero"elseecho "-z $a : string length is not zero"fiif [ -n $a ]thenecho "-n $a : string length is not zero"elseecho "-n $a : string length is zero"fiif [ $a ]thenecho "$a : string is not empty"elseecho "$a : string is empty"fi运行结果:abc = efg: a is not equal to b abc != efg : a is not equal to b -z abc : string length is not zero -n abc : string length is not zero abc : string is not empty字符串运算符列表运算符说明举例=检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。!=检测两个字符串是否相等,不相等返回 true。[ $a != $b ] 返回 true。-z检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。-n检测字符串长度是否为0,不为0返回 true。[ -z $a ] 返回 true。str检测字符串是否为空,不为空返回 true。[ $a ] 返回 true。文件测试运算符文件测试运算符用于检测 Unix 文件的各种属性。例如,量 file 表示文件“/var/www/tutorialspoint/unix/test.sh”,它的大小为100字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:#!/bin/shfile="/var/www/tutorialspoint/unix/test.sh"if [ -r $file ]thenecho "File has read access"elseecho "File does not have read access"fiif [ -w $file ]thenecho "File has write permission"elseecho "File does not have write permission"fiif [ -x $file ]thenecho "File has execute permission"elseecho "File does not have execute permission"fiif [ -f $file ]thenecho "File is an ordinary file"elseecho "This is sepcial file"fiif [ -d $file ]thenecho "File is a directory"elseecho "This is not a directory"fiif [ -s $file ]thenecho "File size is zero"elseecho "File size is not zero"fiif [ -e $file ]thenecho "File exists"elseecho "File does not exist"fi运行结果:File has read access File has write permission File has execute permission File is an ordinary file This is not a directory File size is zero File exists文件测试运算符列表操作符说明举例-b file检测文件是否是块设备文件,如果是,则返回 true。[ -b $file ] 返回 false。-c file检测文件是否是字符设备文件,如果是,则返回 true。[ -b $file ] 返回 false。-d file检测文件是否是目录,如果是,则返回 true。[ -d $file ] 返回 false。-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回 true。-g file检测文件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回 false。-k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回 false。-p file检测文件是否是具名管道,如果是,则返回 true。[ -p $file ] 返回 false。-u file检测文件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回 false。-r file检测文件是否可读,如果是,则返回 true。[ -r $file ] 返回 true。-w file检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。-x file检测文件是否可执行,如果是,则返回 true。[ -x $file ] 返回 true。-s file检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true。-e file检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true。
如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就?一种替换,转义字符也是一种替换。举个例子:#!/bin/basha=10echo -e "Value of a is $a "运行结果:Value of a is 10这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:Value of a is 10 下面的转义字符都可以用在 echo 中:转义字符含义\反斜杠a警报,响铃退格(删除键)f换页(FF),将当前位置移到下页开头 换行 回车 水平制表符(tab键) v垂直制表符可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。命令替换命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。命令替换的语法:`command`注意是反引号,不是单引号,这个键位于 Esc 键下方。下面的例子中,将命令执行结果保存在变量中:#!/bin/bashDATE=`date`echo "Date is $DATE"USERS=`who | wc -l`echo "Logged in user are $USERS"UP=`date ; uptime`echo "Uptime is $UP"运行结果:Date is Thu Jul 2 03:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15变量替换变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值可以使用的变量替换形式:形式说明${var}变量本来的值${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。${var:?message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。请看下面的例子:#!/bin/bash echo ${var:-"Variable is not set"} echo "1 - Value of var is ${var}" echo ${var:="Variable is not set"} echo "2 - Value of var is ${var}" unset var echo ${var:+"This is default value"} echo "3 - Value of var is $var" var="Prefix" echo ${var:+"This is default value"} echo "4 - Value of var is $var" echo ${var:?"Print this message"} echo "5 - Value of var is ${var}"运行结果:纯文本复制Variable is not set1 - Value of var isVariable is not set2 - Value of var is Variable is not set3 - Value of var isThis is default value4 - Value of var is PrefixPrefix5 - Value of var is Prefix
Shell支持自定义变量。定义变量定义变量时,变量名不加美元符号($),如:variableName="value"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键字)。变量定义举例:myUrl="http://see.xidian.edu.cn/cpp/linux/"myNum=100使用变量使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:your_name="mozhiyan"echo $your_nameecho ${your_name}变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:for skill in Ada Coffe Action Javadoecho "I am good at ${skill}Script"done如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。推荐给所有变量加上花括号,这是个好的编程习惯。重新定义变量已定义的变量,可以被重新定义,如:myUrl="http://see.xidian.edu.cn/cpp/linux/"echo ${myUrl}myUrl="http://see.xidian.edu.cn/cpp/shell/"echo ${myUrl}这样写是合法的,但注意,第二次赋值的时候不能写 $myUrl="http://see.xidian.edu.cn/cpp/shell/",使用变量的时候才加美元符($)。只读变量使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。下面的例子尝试更改只读变量,结果报错:#!/bin/bashmyUrl="http://see.xidian.edu.cn/cpp/shell/"readonly myUrlmyUrl="http://see.xidian.edu.cn/cpp/danpianji/"运行脚本,结?如下:/bin/sh: NAME: This variable is read only.删除变量使用 unset 命令可以删除变量。语法:unset variable_name变量被删除后不能再次使用;unset 命令不能删除只读变量。举个例子:#!/bin/shmyUrl="http://see.xidian.edu.cn/cpp/u/xitong/"unset myUrlecho $myUrl上面的脚本没有任何输出。变量类型运行shell时,会同时存在三种变量:1) 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。2) 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。3) shell变量shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
先用who命令查看所有登陆终端 #who -uH 输出如下:NAME LINE TIME IDLE PID COMMENTroot :0 2010-03-01 19:13 ? 2436root pts/0 2010-03-01 19:13 06:44 2851 (:0)root pts/1 2010-03-02 00:52 00:03 29584 (:0)root pts/2 2010-03-02 01:26 00:19 23321 (:0)root pts/3 2010-03-02 01:42 . 26511 (192.168.79.1)然后给最后一个用户发送消息:#write root pts/3输出错误如下:write: you have write permission turned off解决方案输入命令:#mesg y 然后重新输入:#write root pts/3就可以发消息了。
Linux zipinfo命令用于列出压缩文件信息。执行zipinfo指令可得知zip压缩文件的详细信息。语法zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>]参数:-1 只列出文件名称。-2 此参数的效果和指定"-1"参数类似,但可搭配"-h","-t"和"-z"参数使用。-h 只列出压缩文件的文件名称。-l 此参数的效果和指定"-m"参数类似,但会列出原始文件的大小而非每个文件的压缩率。-m 此参数的效果和指定"-s"参数类似,但多会列出每个文件的压缩率。-M 若信息内容超过一个画面,则采用类似more指令的方式列出信息。-s 用类似执行"ls -l"指令的效果列出压缩文件内容。-t 只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率。-T 将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的?序列出。-v 详细显示压缩文件内每一个文件的信息。-x<范本样式> 不列出符合条件的文件的信息。-z 如果压缩文件内含有注释,就将注释显示出来。实例显示压缩文件信息[root@w3cschool.cc a]# zipinfo cp.zip Archive: cp.zip 486 bytes 4 files-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 a.c-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 b.c-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 c.c-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 e.c4 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%[root@w3cschool.cc a]#显示压缩文件中每个文件的信息[root@w3cschool.cc a]# zipinfo -v cp.zip Archive: cp.zip 486 bytes 4 filesEnd-of-central-directory record:------------------------------- Actual offset of end-of-central-dir record: 464 (000001D0h) Expected offset of end-of-central-dir record: 464 (000001D0h) (based on the length of the central directory and its expected offset) This zipfile constitutes the sole disk of a single-part archive; its central directory contains 4 entries. The central directory is 248 (000000F8h) bytes long, and its (expected) offset in bytes from the beginning of the zipfile is 216 (000000D8h). There is no zipfile comment.Central directory entry #1:--------------------------- a.c offset of local header from start of archive: 0 (00000000h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment.Central directory entry #2:--------------------------- b.c offset of local header from start of archive: 54 (00000036h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment.Central directory entry #3:--------------------------- c.c offset of local header from start of archive: 108 (0000006Ch) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment.Central directory entry #4:--------------------------- e.c offset of local header from start of archive: 162 (000000A2h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment.
服务热线:
4006-75-4006(7*24小时在线)
总机直拨:
0871-63886388(工作日9:00-18:00)
售前咨询
售后咨询
备案咨询
电话
二维码
TOP