工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2012年05月的文章

shell求和

awk 'BEGIN{total=0}{total=total+$1}END{print "the total is " total }'  file

shell命令避免被截断

两种方法避免shell被截断,一种是{}另一种是()

区别是{}需要多出来一对空格,而()就不需要

相同的是每个命令之后都要有分号;

例如,下面两个就是区别,有没有空格的区别:

{ echo "jiaozhenqing";echo "1"; }

  (echo "jiaozhenqing";echo "1";)

{空格echo "jiaozhenqing";echo "1";空格}

>/dev/null 2>&1含义解释

经常需要记忆这个东西,cmd>/dev/null 2>&1,那么原因是什么呢?

今天好好研究下这个东西

首先是2>1和2>&1的区别,很明显,我们是需要2>&1而不是2>1

          2>&1这个是说将cmd执行的错误内容输出到标准输出中

          2>1这个则是将cmd执行的错误内容输出到1这个文件中

第二点,2>&1是什么意思?&1是说文件描述符因此2>&1是说将错误输出输出到标准输出

第三点,为什么是cmd >/dev/null 2>&1而不是cmd 2>&1 >/dev/null呢?

          如果先2>&1,那么这个时候还没有生成标准输出呢,因此也就无法复用标准输出的文件描述符了,所以需要先有标准输出然后再有错误输出传递到标准输出。

Office 2010 取消弹出宏安全性设置错误的提示的技巧

新安装的Office 2010体积实在是太大了,我们一般会在安装时精简掉一些自认为没用的组件,但是如果选择不正确的话,很容易出现错误提示,最常见的莫过于这个了

在打开或关闭word文档的时候提示

 


 

 

 


"您试图运行的函数包含宏或需要宏语言支持的内容.而在安装此软件时,您(或者您的管理员)选择了不安装宏或空间的支持功能


此错误通常是由宏安全性设置造成的.如果您知道宏来自您信任的来源,则可将宏安全性设置更改为允许启用宏.安全性设置的更改方式取决于您使用的 Microsoft office System 程序……”


不管是点哪个按钮都会有后续的几个对话框出来,几次以后文件终于打开。当你关闭文档的时候再一次出来对话框:“所做更改会影响共用模板 Normal.dot。是否保存所做的更改?”点击“是”,却没用,只能点击“否”才可以关闭。


这主要是由于安装的时候没有安装"office 共享功能"中的"visual Basic for Applications"组件的原因

解决的方法有以下几种:


第1种方法:

如果你手头有Office 2010的安装程序或电脑有安装文档的话

在控制面板中打开程序和功能,选择Office 2010右键点击更改,再打开Office 2010安装程序-选择"添加或删除功能"


重新添加"office 共享功能"中的"visual Basic for Applications"组件

 

安装完成后,再次启动Word,即搞定

第2中方法:

Word选项——加载项——管理【com加载项】,转到——把几个勾勾都取消掉——确定,即可。Win7中注意要以管理员身份进行,因为这些写入了注册表。

ubuntu 系统服务设置 - chkconfig命令

安装命令:
sudo apt-get install chkconfig
(可以用sysv-rc-conf代替)
原帖地址:
http://blog.csdn.net/youyu_buzai/archive/2009/03/04/3956845.aspx

功能说明:检查、设定系统的各种服务。

语法:chkconfig [--add][--del][--list][系统服务]或
chkconfig [--level<等级代号>][系统服务][on/off/reset]

补充说明:这个是redhat公司遵循gpl规则所开发的程序,它可以查询操作系统在每一个执行等级(runlevel)中,会执行哪些系统服务,其中包括各种daemon。
linux os 将操作环境分为以下7个等级:

0:开机(请不要切换到此等级)
1:单人使用者模式的文字界面
2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能
3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能
4:某些发行版的linux使用此等级进入x windows system
5:某些发行版的linux使用此等级进入x windows system
6:重新启动

参数:    --add   新增所指定的系统服务
--del 删除所指定的系统服务
--level 指定该系统服务要在哪个执行等级中开启或关闭
--list   列出当前可从chkconfig指令管理的所有系统服务和等级代号
on/off/reset   在指定的执行登记,开启/关闭/重置该系统服务
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语法:
    chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name
    chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定 了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开 关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
    --level选项可以指定要查看的运行级而不一定是当前运行级。
    需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
    chkconfig --list :显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
    chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
    chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
    chkconfig [--level levels] name <on|off|reset>:设置某一服务在指定的运行级是被启动,停止还是重置。例如,要在3,4,5运行级停止nfs服务,则命令如下:
    chkconfig --level 345 nfs off
运行级文件:
    每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动 和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
附加介绍一下Linux系统的运行级的概念:
Linux中有多种运行级,常见的就是多用户的2,3,4,5 ,很多人知道5是运行X-Windows的级别,而0就是关机了。运行级的改变可以通过init命令来切换。例如,假设你要维护系统进入单用户状态,那 么,可以使用init1来切换。在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K和S开头的文件, 按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux提供了chkconfig命令用来更新和查询不同运行级上的系统服 务。
范例:

1.查看在各种不同的执行等级中,各项服务的状况:
$chkconfig --list

2.列出系统服务vsftpd在各个执行等级的启动情况:
$chkconfig --list vsftpd

3.在执行等级3,5时,关闭vsftpd系统服务:
$chkconfig --level 35 vsftpd off

4.在执行等级2,3,5时,开启 vsftpd系统服务:
$chkconfig --level 235 vsftpd on

5.关闭一些自己不需要的服务 ->
如果没有打印机:
chkconfig --level 235 cups off
如果没有局域网:
chkconfig --level 235 smb off
如果不需要远程用户登录的:
chkconfig --level 235 sshd off
如果不需要定时任务的:
chkconfig --level 235 crond off
如果不需要添加新硬件的:
chkconfig --level 235 kudzu off

ubuntu chkconfig undate-rc.d

ubuntu 9.10 已经不支持chkconfig 了而用了update-rc.d,

关于 update-rc.d 的一些使用介绍
Debian 的update-rc.d与RH的chkconfig工具相类似。然而chkconfig是一个二进制程序,而update-rc.d是一个Perl脚本。这些工具有不同的命令行选项,但是却执行类似的功能。下表列出了update-rc.d的一些用法。如果要查看完整的信息,我们可以查阅相关的和册页。

命令 功能
update-rc.d -f remove 从所有的运行级别配置目录中是删除指定的服务
update-rc.d start 配置服务在运行级别列表中按指定的顺序启动
update-rc.d stop 配置服务在运行级别列表中指定的顺序停止
update -rc.d与RH的chkconfig之间最大的不同就在于update-rc.d是要设置所以指向/etc/init.d目录下服务脚本的运行级别链接,而chkconfig是要每一个运行级别单独配置服务。从本质上来说,这也就意味着每次我们使用update-rc.d改变一个运行级别,我们就不得不改变所有的。例如,下面的命令序列与命令chkconfig -level 2345 inetd off的作用相同:
$ update-rc.d -f inetd remove
$ update-rc.d inetd stop 20 0 1 2 3 4 5 6 .
第一个命令移除了所有的指向/etc/init.d/inetd服务脚本的运行级别链接,-f标志将会使得update-rc.d即使在inetd脚本本身已经存在的情况仍然进行相应的处理。第二个命令在每一个运行级别创建了一个服务级别为20的停止脚本。例如,这会创建一个 /etc/rc3.d/K20inetd的符号链接来禁止运行级别3中inetd的运行。(在这里我们要注意的是我们要显示的添加reboot与 shutdown运行级别,即0和6,仅管其中所有的服务都会被设置成为“stop“)。作为另外的一个例子,下面所显示的命令将会在运行级别3到5允许 inetd的运行,而在其他的运行级别中则被禁止:
$ update-rc.d -f inetd remove
$ update-rc.d inetd start 20 3 4 5 . stop 20 0 1 2 6 .
Debian的update-rc.d最初看起来会叫人有一些迷惑,但是旦我们明白,我们就会发现他可以多么出色的完成我们的工作。

Ubuntu Linux配置IP地址

一、使用命令设置ubuntu的ip地址

1.修改配置文件blacklist.conf禁用IPV6:
sudo vi /etc/modprobe.d/blacklist.conf

2.在文档最后添加 blacklist ipv6,然后查看修改结果:
cat /etc/modprobe.d/blacklist.conf

3.设置IP(设置网卡eth0的IP地址和子网掩码)
sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0

4.设置网关
sudo route add default gw 192.168.2.254

5.设置DNS 修改/etc/resolv.conf,在其中加入nameserver DNS的地址1 和 nameserver DNS的地址2 完成。

6.重启网络服务(若不行,请重启ubuntu:sudo reboot):
sudo /etc/init.d/networking restart

7.查看当前IP:
ifconfig

二、直接修改系统配置文件

ubuntu的网络配置文件是:/etc/network/interfaces
打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载。
1. 以DHCP方式配置网卡
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:
# The primary network interface - use DHCP to find our address
auto eth0
iface eth0 inet dhcp

用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart

也可以在命令行下直接输入下面的命令来获取地址
sudo dhclient eth0

2. 为网卡配置静态IP地址
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.1
gateway 192.168.2.254
netmask 255.255.255.0
#network 192.168.2.0
#broadcast 192.168.2.255

将上面的ip地址等信息换成你自己就可以了.用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart

3. 设定第二个IP地址(虚拟IP地址)
编辑文件/etc/network/interfaces:
sudo vi /etc/network/interfaces

在该文件中添加如下的行:
auto eth0:1
iface eth0:1 inet static
address x.x.x.x
netmask x.x.x.x
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x

根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息:
用下面的命令使网络设置生效:
sudo /etc/init.d/networking restart
4. 设置主机名称(hostname)
使用下面的命令来查看当前主机的主机名称:
sudo /bin/hostname

使用下面的命令来设置当前主机的主机名称:
sudo /bin/hostname newname

系统启动时,它会从/etc/hostname来读取主机的名称。

5. 配置DNS
首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询。要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件,假设DNS服务器的IP地址是192.168.2.2, 那么/etc/resolv.conf文件的内容应为:
search chotim.com
nameserver 192.168.2.2

6.手动重启网络服务:
sudo /etc/init.d/networking restart

返回结果如下:
*Reconfiguring network interfaces… [OK]

很多TIME_WAIT连接导致Cannot assign requested address的解决办法

客户端connect服务器,执行一定时间后,接口返回-99的错误

查看错误信息 OS error code  99:  Cannot assign requested address

猜想端口被用光的原因,网络搜索得到一个解释:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”

通过netstat,的确看到很多TIME_WAIT状态的连接

因为是调用API,所以无法对连接进行opt设置,只能通过设置系统配置得以解决

解决办法:

执行命令修改如下2个内核参数   
sysctl -w net.ipv4.tcp_timestamps=1  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用

sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收

Records:18123