分类归档: Linux

解决:ERROR 2013 (HY000)

这个问题遇到了好几次,是出现在用机器名访问数据库时。
以前看了网上很多解决办法都没有搞定,今天终于找到真正的解决办法了。。。没想到居然是这样。。

Arch Linux, a similar line can be added to /etc/hosts.allow:

mysqld: ALL

参考资料:http://www.bramschoenmakers.nl/en/node/595

另外还有一个就是archlinux的mysqld默认配置文件是关闭了网络访问的(skip-networking),如果无法连接可以看看是不是/etc/mysql/my.cnf中有这个选项。

Read: 826

[转]关于bash中if语法结构的广泛误解

src: http://www.linuxdiyf.com/viewarticle.php?id=105505

我打赌正在看这篇文章的你, 超过99%的可能性你对这个问题的理解是错的. 或者至少是有偏差的.

我深信这是一种教育法上的广泛错误, 那就是告诉大家说:

if [ condition ]
then

fi

这是bash中条件语句的"语法".

任何人, 或者说几乎任何人, 都会在这种描述下自然地认为: [ 和 ] 是这种语法结构本身的一部分, 并且, 老老实实地在自己的脚本中总是这样使用if 语句, 如果你总是在判断字符串是否相等, 或文件的各种属性, 这么做倒是没错, 只不过你可能会这样犯错:(下文都假设$1内容为-a)

if ["$1" = "-a" ]

if [ "$1 = "-a"]

毕竟, 很多其它语言中, 特殊符号如()、{}做分隔符时, 可以与被分隔内容亲密无间. 而bash会来答复你的这种写法:

[-a: command not found
bash: [: missing `]’

我相信, 以上这种心理模型造成的失败后果十分严重, bash的错误信息显示出它内部并不这样看待if 条件语句的结构.

上面的模型同样不能解释下面的合法bash 命令:

[ "$1" = "-a" ]

仅仅这本身就是一个合法的命令, 没有if、then、fi这些东西,当然, 下面这样的也合法

[ "$1" = "-a" ] && echo yes

你如何解释这些烂事? 当然你可以自圆其说地不断对上面的if进行补充, 呃, [ .. ] 这种结构就是这么特别, 你必需在[之后有至少一个空格, 并且在]之前也至少有一个空格, 同时[..] 结构还可以单独出现, 就象上面这样, 另外… 这样的解释简直是自欺欺人, 我敢保证企图对自己这样解释的人根本自己就在怀疑这种说法, 因为你根本不知道这个结构还有其它什么怪诞诡秘之处何时会突然跳出来让你大吃一惊. 我承认,我自己也曾经经历过这样的想法.

为了彻底批判这种错误概念, 容我再举一例:

if ps ax | grep oracle > /dev/null 2>&1 ; then

fi

首先, 这是合法的, 它的目的是想知道进程列表中有没有与oracle相关的东西, 当然, 如果你够牛, 就能看出这种做法有另外的问题. 但这不是我想说的重点.

我想说的是, 你前面被教导的这种if 语句的语法模型, 如何解释这个, [ 与 ] 又不见了, 并且还出现了管道, 普通的管道我们都见过, 但它能安全地出现在if 语句中吗, 并且, 让你感觉熟悉和安全的[ 和 ]又不见了.

好吧, 拨乱的部分至此为止, 如果你想获得一个关于bash中if结构的正确的健康的环保的知识, 就打起精神往下看:

1. 首先, [ 在bash中没有特殊地位, 它是一个命令, 就跟cat, ls, grep一样让你感到熟悉的命令. 它不是关键字,虽然它的更出色的胞弟"[["是

echo [

你就得到 [, 不信就试试, bash不会报告任何错误! 但这不说明它不是关键字, echo if你也能得到if

所以, 请再试:

which [
以及
ls -l $(which [)

2. 然后, if 的真正模型是:

if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]… [ else COMMANDS; ] fi

其实, bash中的help if就给了你正确的答案, 但我不知道什么原因无数人就是忽略了它, 而非常多的bash教学资料中都采用了本文开头提出的那种模型来告诉你关于if 结构的事.

注意: [ "$1" = "-a" ] 只一个命令, [ 是命令名!, "$1"是第一个参数, =是第二个参数, "-a"是第三个, ]是第4个. 是[这个命令, 而不是bash本身在报怨 [ "$1" = "-a"] 这样的结构造成的错误, 因为[这个命令对它的参数有所期望, 它期望最后一个参数是 ], 而你用"-a"] 这种连写的形式, 它得到的就只有3个参数: $1, = 和 -a].

这也解释了这样的错误:
["$1" = "-a" ]

bash解释器得到了这样的一个命令行:
[-a = "-a" ]

当然, 它认为 [-a 是命令名部分, 而你的系统中没有这个命令, 所以会报告说:
[-a: command not found

3. 其次, bash中有一个builtin的 [命令, 通常你使用[执行的都是这个内置的命令, 目的是效率. 启动一个进程的代价太高.

试试
type [
命令

Read: 632

Linux下的邮件系统概述

在Linux下有许多软件包可以实现标准的邮件服务。UNIX/Linux的电子邮件系统模型基本可分为邮件传 递代理MTA,邮件存储和获取代理MSA,以及邮件客户代理MUA三大模块。虽然也有一些特殊的邮件应用程序无法确切归入上述分类。下面我们就Linux 邮件服务做一概述。

1、邮件传递代理-MTA

在Linux下的邮件传递代理包括 sendmail,该系统几乎在任何UNIX平台上都有相应的版本;还有D.J. Bernstein的qmail以及Wietse Venema的Postfix系统。它们负责接收并转递邮件。这听起来很简单,实际上设置可能相当复杂。在邮件策略管理时需要设置一系列的路由和伪装选 项,而许多功能是由语言编程实现的,用以过滤或者修改中继消息的头信息。此外邮件路由和寻址邮件存储信箱的过程包含了复杂的与各种目录服务交互操作,这些 目录服务可能包括DNS,密码文件,NIS, LDAP别名/数据库管理文件,以及各种的通用数据库系统。

如今的MTA还要实现反垃圾邮 件功能,控制邮件头的to和from地址格式,达到允许或者限制特定域名或者地址范围目的,以上主要是通过修改存取控制表和规则实现。这一过程通常包括查 询数据表或者目录服务,例如Paul Vixie的实时黑洞列表程序RBL,邮件滥用预防系统MAPS,以及同类的Dorkslayer/ORBS系统。MTA一直在不断增强之中,以实现加强 的策略控制以及反病毒和反蠕虫等功能。

在大多数情况下,安装和设置MTA系统比较容易,不过强大的功能的实现是以高度复杂性为代价的。如 果你所在的机构选择定制的MTA来满足特定的路由,体系,安全性和反垃圾邮件等要求,就需要更加复杂的设置选项,配置包括设计并处理MTA和各种子系统如 LDAP、DNS服务器之间的复杂关系。

2、邮件存储和获取代理MSA

一旦安装并设 置完成了MTA,通常还需要对MSA系统进行同样的配置过程。如今大多数机构并不直接将邮件传送到桌面客户系统,而是将邮件存储到服务器,让用户通过 POP或者IMAP来读取各自的邮件。 邮件存储的管理有许多种协议,但如今最常用的是POP3和IMAP4。对于MTA来说,由一些程序,或者称之为Daemon来实现相应协议的服务。大多数 MSA可以与通用的MTA交互,此外这些系统还包含加锁或者其他安全机制,使得多个MSA可以并行工作而不发生冲突。

这意味着一些用户可 以通过POP协议获取邮件而同时其余一些用户可以使用IMAP协议,而另外一些用户可以登录系统,使用本地MUA例如pine,mutt或elm 处理邮件。单独用户也可以从一种存取协议切换到另一种,而并不需要系统管理员的干预。聪明的用户甚至可以越过通常的MSA/MUA服务,而使用通常的 UNIX命令如cp、mv和ftp或者远程同步rsync来随意处置他们的邮件。对普通用户来说这有些艰涩,但该方法有时可以用来方便地修复崩溃了的邮箱 系统。 在一个已经安装了Linux系统机器上设置POP服务相当容易,甚至不需要什么操作。通常POP Daemon在最初的Linux操作系统安装时已经设立。而如果POP daemon被禁止,可以在/etc/inetd.conf文件中去掉相应行的注释,并重新启动Daemon服务即可。

类似的, IMAP也是如此。POP通常将邮件转递到客户端并从服务器上移除,而IMAP允许用户将邮件存贮在服务器端的文件夹中,而客户端的拷贝是缓存或者工作副 本,这样做需要更多的服务器存储空间,却可以让IT部门集中在服务器端进行备份和恢复,并让客户端保持相当的灵活性和安全性。IMAP也可以设置成象 POP那样在客户端读取后就删除服务器端的邮件,从操作上讲,两者并没有什么不同。两种服务都由inetd来控制,或可称其为网络分发服务,相当于 Linux的“传达接待员”。 POP或IMAP可以经年累月的不间歇地运行。无需特殊关照,默默地为成百上千个用户和邮箱服务。不过有时邮件回复系统会犯些愚蠢的错误,或者有些邮件软 件产生了一些bug,这就需要系统管理员介入,解决某些系统故障,清除一些邮件碎片和垃圾。

例如,有的用户的pop系统可能崩溃,通常是 由于客户收到了太大的邮件附件所致。过大的附件文件超过了磁盘空间限制,解决方法是利用shell命令,利用uudecode解码附件,并存储到该用户的 home目录。也可以设计一些小脚本程序来处理邮件,重新恢复用户的邮箱系统。通常UNIX下的mbox是简单的文本文件,qmail邮件存储在含有单个 小文本文件的目录中。一个胜任的系统管理员完全可以轻而易举的实现上述操作。也就是说,你所遇到的大多数与 MSA和MTA有关的问题可以通过文本编辑器和常用的UNIX过滤器和应用程序加以解决。

3、邮件客户代理MUA

邮 件客户代理MUA种类繁多,而且如雨后春笋,层出不穷,各有千秋。大都符合POP和IMAP协议。这也包括微软的Outlook系列。在Linux下,许 多人使用fetchmail抓取邮件并保存在本地邮箱。然后使用任何一种邮件客户代理MUA,比如 elm,pine,mutt,MH/exmh,EMACS 的rmail,vmail,mh-e,gnus以及大量的带有GUI界面的如Balsa, Mahogany等来处理邮件。也有众多Linux用户选择使用Netscape Communicator内置的邮件客户端。

4、另类的Linux邮件应用

在 Linux和UNIX下,也有许多工具诸如procmail,vacation,biff,和fetchmail等,不能划归到MTA,MSA,MUA的 分类中。这里做另类简介。 promail经常被用作“本地递送代理”和邮件处理代理。它通常用来过滤发送给最终收信人的传送信息部分。允许用户编写脚本程序实现对某些特定邮件的自 动发文,拒绝,恢复或者转寄功能。也可以用作处理邮箱,或者作为常规的电子邮件编程语言和程序库。

vacation是一个收信后自动回复 邮件的早期简单应用。最初用来提醒通信者收信人正在度假,这一功能完全可以通过两行简单的procmail命令实现。 biff可用来通知用户有邮件到达。在图形界面GUI下,也有几款类似的应用,可以通过显示图标,动画,播放音乐或者语音提示表达邮件事件。还可以通过各 种后台的MSA协议实现biff信息在整个网络上的中继传递。

总之,Linux下的邮件服务是方便灵活,强大而复杂的。只要精心规划,悉心设计,细心配置,完全可以搭建出高效而免费的多功能电子邮件系统平台。

Read: 748

Amarok Wiki: How to change the audio output to.

How can I change where the audio is output to?

Using xine’s ALSA output pluggin, you can output to a specific device (or all devices).

Finding the names of your cards

Find out the name of your soundcards with the command:
cat /proc/asound/cards
In the example below, the first card (card 0) is called "Live" and the second card (card 1) called "Headset":
oliver@panda:~$ cat /proc/asound/cards
0 [Live ]: EMU10K1 - SBLive! Value [CT4832]
SBLive! Value [CT4832] (rev.8, serial:0x80271102) at 0xd000, irq 5
1 [Headset ]: USB-Audio - Logitech USB Headset
Logitech Logitech USB Headset at usb-0000:00:04.2-2, full speed

Using a specific soundcard: method 1

Enter the word "plughw:" and the name of your card in the box labelled "device used for stereo output:" in the xine-engine configuration tab. For example:
plughw:Headset

Alternatively, I had to use this entry to make my USB headphones work.

hw:Headset,0

Using a specific soundcard: method 2

Set up an ~/.asoundrc (user only) or /etc/asound.conf (system wide) file that aliases your hardware devices, and then insert that alias in the "device used for stereo output:" box in the xine-engine configuration tab. Alternatively, you can directly enter the alsa device (hw:0,0 or hw:1,0 and so on). If you choose this latter (alternate) method, be aware that ALSA’s corresponding plugfoo (e.g. plughw:0,0 or plughw:1,0 and so on) routing through alsa-lib is much preferred.
Here is a sample ~/.asoundrc for a machine that has an onboard Intel AC97 codec and a usb-audio device:
pcm.intel8x0 {
type plug
slave.pcm "hw:0"
}

ctl.intel8x0 {
type hw
card 0
}

pcm.usb-audio {
type plug
slave.pcm "hw:1"
}

ctl.usb-audio {
type hw
card 1
}

now enter "usb-audio" in the xine-engine setup screen and output should go to the usb-audio device (with alsa-lib properly handling sample rate conversion, channels, and so on).

Using all your soundcards at once

This example allows Amarok to play music through all your sound devices at the same time.

1. Copy the following text into the file ~/.asoundrc (change ‘Live’ and ‘Headset’ to the names of your sound devices – or you can just use the card numbers ‘0’ and ‘1’):
# This creates a 2-channel interleaved pcm stream based on
# two 2-channel slave devices.

pcm.both {
type route;
slave.pcm {
# create a virtual 4-channel device from two sound devices
type multi;
slaves.a.pcm "plughw:Live";
slaves.a.channels 2;
slaves.b.pcm "plughw:Headset";
slaves.b.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
}

# Map two channels of input to four channels of output
ttable.0.0 1;
ttable.1.1 1;
ttable.0.2 1;
ttable.1.3 1;
}

# Some programs will be unhappy if there is no mixer to talk to,
# so we set this to one of the cards.
# This could be any card (Headset or Live in this example).

ctl.both {
type hw;
card Headset;
}
2. Save the .asoundrc file and restart Amarok.
3. Edit the box labelled "device used for stereo output:" in the xine-engine configuration tab so it reads:
plug:both

Other tips

To use a dmixed virtual device, ensure that the "sound card can do mmap" checkbox is unchecked.

Image:Xine-config.jpg

Read: 924

Linux: ntfs-3g or ntfs-fuse ?

Linux kernel driver

The NTFS Linux kernel driver is the piece of code that allows Linux software to access NTFS Volumes.

fast, reliable, read-only. Most people already have it.

注: 虽然linux本身就有支持ntfs,且效率也不错,但唯一致命的缺憾却是……read-only 不可写

NTFS-3G Stable Read/Write Driver

The NTFS-3G driver is an open source read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD, and Haiku. It provides safe and fast handling of the Windows XP, Windows Server 2003, Windows 2000 and Windows Vista file systems. POSIX file system operations are supported, and full file ownership and permission support is available as well.

长期以来一直用的是ntfs-3g 但是最近发现ntfs-3g虽然用起来很稳定,但cpu使用率奇高,很多时候甚至达到了50%(
占掉了一整个核心…), 所以开始寻找新的解决方案。

About ntfsmount

ntfsmount (part of the ntfsprogs) is an read/write userspace NTFS driver. It provides full read-write access to NTFS, excluding writing compressed and encrypted files, changing file ownership, access right.

It is different from the kernel driver in the way that is resides in the user space. That means that it is a bit slower but has more features, and we love features, don’t we?

注:目前使用过程中还是有些诡异的问题,比如在我这里出现了启动时不能自动挂载,但是启动完成后手工执行mount -a 又正常,令人不解。不过总的来说,还是不错的,最起码资源占用没那么恐怖了,速度感觉有所提高。当然,这也可能是心理感觉而已,哈哈。

Read: 910