Archive for the ‘Linux’ Category.

解决 scim-python 无法使用 shift 切换中英文状态的问题

在某些系统下,scim-python 输入法会出现无法使用 shift 键切换中英文的情况。这种问题一般是由于 scim-bridge 引起的,一个简单的解决办法就是不是用 scim-bridge。输入命令:

sudo im-switch -c

出现以下信息:

[patrick@ubuntu:~]$ sudo im-switch -c
System wide default for zh_CN locale is marked with [+].

There are 5 alternatives which provide `xinput-zh_CN'.

  Selection    Alternative
-----------------------------------------------
          1    /etc/X11/xinit/xinput.d/scim-pinyin
          2    /etc/X11/xinit/xinput.d/ibus
*         3    /etc/X11/xinit/xinput.d/scim
          4    /etc/X11/xinit/xinput.d/scim-immodule
+         5    /etc/X11/xinit/xinput.d/scim-bridge

Press enter to keep the default[*], or type selection number: 3

选择 scim 而不是 scim-bridge,回车保存,再重新登录系统即可。

升级 Ubuntu 8.10 后无法使用网络的问题

今天将系统从 Ubuntu 8.04 升级到 8.10 beta,基本上一切正常。只是本来在公司用得好好的网络链接,回到宿舍后却突然无法使用了。

使用 ifconfig 发现 eth0 没有从路由器上获得 IP 地址。在 /var/log/syslog 中看到系统不断地重复输出(3秒一次)

Oct  7 22:34:54 ubuntu NetworkManager: <info>  disconnected by the system bus.
Oct  7 22:34:57 ubuntu NetworkManager: <WARN>  nm_dbus_manager_start_service(): Could not acquire the NetworkManager service as it is already taken.

通过浏览日志发现,系统在启动的时候其实已经通过 DHCP 获得了 IP 地址,而且 Activation (eth0) Stage 的五个步骤也全部成功完成。但是随后输出一下日志

Oct  7 22:20:22 ubuntu NetworkManager: <info>  (eth0): carrier now OFF (device state 8 )
Oct  7 22:20:22 ubuntu NetworkManager: <info>  (eth0): device state change: 8 -> 2
Oct  7 22:20:22 ubuntu NetworkManager: <info>  (eth0): deactivating device.
Oct  7 22:20:22 ubuntu NetworkManager: <info>  eth0: canceled DHCP transaction, dhcp client pid 6853

不知道为什么会突然 carrier OFF。考虑到网上很多用户反映 Ubuntu 8.10 的 NetworkManager 不好用,不能排除新版本的 NetworkManager 依旧存在某些 bug。

如果需要快速恢复系统的网络链接,一个快捷的方法是编辑 /etc/network/interfaces 文件。我打开文件后发现其中内容只有 lo 的配置:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

于是为 eth0(有线链接)和 eth1(无线链接)加上配置,如下:

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

保存之后执行
sudo /etc/init.d/networking restart
即可恢复。但是这时 NetworkManager 不再管理网络链接,点击其图标会提示 device is unmanaged。

如果希望保留 NetworkManager 的特性,还可以编辑 /etc/NetworkManager/nm-system-settings.conf,将其中的

[ifupdown]
managed=false

修改成为

[ifupdown]
managed=true

即可。

Linux 系统性能监视工具

在 Linux 服务器上,有众多命令行小工具可以用于监控服务器性能和状态。这些工具对于快速判断服务器运行情况,非常有帮助。

  • top
    top 是最常用的命令之一,用来持续显示系统资源的最新使用状况。
    [patrick@ubuntu:~]$ top
    top - 23:39:07 up  5:55,  3 users,  load average: 0.16, 0.22, 0.18
    Tasks: 141 total,   2 running, 138 sleeping,   0 stopped,   1 zombie
    Cpu(s):  3.1%us,  1.1%sy,  0.0%ni, 95.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   2041888k total,  1314284k used,   727604k free,    57688k buffers
    Swap:  1951856k total,        0k used,  1951856k free,   728052k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    6043 root      20   0  855m  50m  13m R    3  2.5  12:11.37 Xorg
    2477 root      15  -5     0    0    0 S    1  0.0   0:02.28 scsi_eh_3
    7008 patrick   20   0 15648 4936 3948 S    1  0.2   0:10.46 gnome-screensav

    按 M 将会按照占用内存的大小排列进程,按 P 则会按照 CPU 占用率进行排列。
    VIRT 表示进程使用的内存总大小,包括进程实际使用的内存、映射过的文件、与其它进程共享的内存等。RES 表示实际使用中的内存大小,SHR 表示与其它进程共享的内存大小。
  • Continue reading ‘Linux 系统性能监视工具’ »

怎样在从 Linux 服务器注销之后继续运行程序

一般来说,通过终端连接到 Unix/Linux/BSD 服务器上运行服务器的程序,如果终端和服务器之间的连接断开的话,通过该终端启动的服务器程序也会相应的终止运行。如果想要程序在用户从服务器注销之后继续运行,我们可以使用 nohup 命令来做到这一点。通过 nohup 启动的程序,将会忽略系统的挂起(hangup)信号,也就能够使得程序会在用户注销之后依然在后台运行下去。