IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux  >

快速启动您的 Linux 应用: 针对 Linux 开发新手的基本任务

登录/注销、更改鼠标设置、打开 shell 窗口和挂装/卸装 CD-ROM

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Ian Shields, 高级程序员, IBM 

2002 年 5 月 01 日

要在 Linux 系统上安装大量的快速启动软件,您将需要以 root 用户(或者可能是另一个用户)身份进行登录,打开终端或 shell 窗口并挂装 CD-ROM。如果您还是一位 Linux 新手,本文将指导您完成这些任务及其它更多工作。

以 root 用户身份登录

如果您学习了我们的 Red Hat Linux 7.1Red Hat Linux 7.2SuSE Linux 7.3的安装技巧,则在引导系统时将看到图形登录屏幕。屏幕外观会根据 Linux 分发版(distribution)的不同而有所不同。您将看到一个可视的输入域(用于输入登录名),或者看到两个输入域(一个用于输入登录名,一个用于输入密码)。还有一个可以关机或重新引导系统的按钮,并且可能有一个允许选择桌面的按钮。在本文中我们将重点讨论 KDE 和 GNOME 桌面,但是其它桌面(如 fvwm2、windowmaker 和 twm)也都是可用的。

对于本文中的许多任务,将使用特定的 root 登录名。 root用户,有时也称作 超级用户,通常是用于管理象配置系统或安装软件之类任务的用户。 仅当需要执行管理任务时才使用 root ;普通工作应避免使用 root 。root 用户可以做任何事,包括无意中破坏系统,这通常不是什么好事。普通用户拥有的特权较少,因而可以使系统免受普通用户无意中的破坏。

应该在登录域中输入登录名(或者是 root ,如果指示您这么做),然后按 Enter 键。根据拥有的登录提示类型,您将看到输入密码的提示,或者需要光标移动到密码输入域。输入密码,再次按 Enter 键,这样您将登录进系统并看到桌面。图 1 是以 root 用户身份使用 SuSE Linux 7.3 和 KDE 桌面时可能看到的内容示例。图 2 是使用 Red Hat Linux 7.2 和 GNOME 桌面时可能看到的内容示例。


图 1. 以 root 用户使用 SuSE Linux 7.3 和 KDE 桌面的样本初始窗口
KDE 桌面

图 2. 以 root 用户使用 Red Hat Linux 7.2 和 GNOME 桌面的样本初始窗口
GNOME 桌面

要研究桌面,可以在图标上移动鼠标(但是在以非 root 用户身份登录前,请尽量避免启动应用程序)。





回页首


切换成左手鼠标用法

我们通常假定用户用右手使用鼠标,但是您可以更改鼠标配置以便于左手使用。下面我们将在使用 KDE 桌面的 SuSE Linux 7.3 系统上对此做图解说明。首先,单击面板上的 Control Center 图标,如图 3 所示。


图 3. KDE Control Center 图标
KDE Control Center 图标

现在单击 Peripherals 项旁边的 + 号,然后单击 Mouse 项。将看到类似于图 4 的窗口,可在其中更改鼠标设置。如果未应用任何更改就退出,则会提示您是忽略更改还是应用更改。


图 4. 更改鼠标设置的 KDE 窗口
更改鼠标设置的 KDE 窗口

GNOME 桌面具有相似的功能。我们将在图 5 中图解说明如何通过主菜单使用这些功能,但是也可以从 Start Here 视图(参阅图 2)使用首选项。正如图 5 中所示的那样,单击主菜单(Main Menu),然后单击 Settings、Peripherals,最后单击 Mouse。


图 5. 从 GNOME 主菜单使用鼠标设置
从 GNOME 主菜单使用鼠标设置

应该会看到类似于图 6 的窗口,可在其中更改鼠标设置。


图 6. 更改鼠标设置的 GNOME 窗口
更改鼠标设置的 GNOME 窗口




回页首


打开终端或 shell 窗口

通常会需要打开终端或 shell 窗口。该窗口类似于 Windows 中的 DOS 命令提示符。在 KDE 桌面上,在屏幕的底部有个类似于图 7 的 KDE 面板。单击如图所示的 shell 图标。在 GNOME 桌面上,将有类似于图 8 的图标。


图 7. KDE shell 图标
KDE shell 图标

图 8. GNOME shell 图标
GNOME shell 图标

shell 窗口的外观取决于分发版和选择的桌面。要调整它的大小,可以使用鼠标左键拖动窗口的角或边。要回滚到最近的历史,可以使用滚动条。以 # 字符结束的命令提示符,说明该 shell 的使用者是用户 root 。对于 root 以外的其他用户,命令提示符以 $ 字符结束。如果需要,可以使用向上箭头重新调用前面的命令,并对它们进行修改。典型的 KDE Konsole shell 窗口如图 9 所示。可以使用 Settings 菜单来更改诸如窗口颜色和字体这样的属性。


图 9. KDE Konsole shell 窗口
KDE Konsole shell 窗口

在图 9 中,我们显示了一些命令及其输出:

whoami
显示了谁正在使用该终端窗口,本例中是 root
pwd
打印当前工作目录的全名,在本例中是 /root 。注:在命令提示符中,# 之前的颚化符号(~)说明该用户目前正处于其主目录中。
cd
更改当前或工作目录。我们举例说明了如何更改到 /(或根)目录,以及如何更改到 /tmp 目录,后者通常用于存储临时文件。注:/ 是整个文件系统的根,而 /root 是 root 用户的主目录。使用不带任何目录名的 cd 将使用户返回到主目录。root 以外用户通常拥有一个位于 /home 下的主目录。例如,/home/ian 将是我在系统上的主目录,在该系统中我的标识是 ian 。还记得颚化符号(~)吗?用户 ian 的主目录也可以引用为 ~ ian
uname
不带参数,则显示操作系统的名称:Linux。带有 -a 参数,则显示有关系统的额外信息。
which
扫描 PATH 环境变量中的目录,并显示到可执行程序的完整路径,如果您在 shell 提示符中输入命令就会执行该程序。在本例中,我们看到将从 /usr/X11R6/bin/xclock 运行 xclock 程序。
xclock
在桌面上启动一个带有时钟的新窗口。请注意命令尾部的 &,它表明命令处理器将把控制返还给终端窗口,而不是等待该命令结束。还要注意的是,这是由该终端窗口产生的第一个这样的进程,它的进程标识(PID)是 4313。
ps
如果带有 -T 选项,则显示由该终端启动的所有进程。在这个示例中, bash shell 程序正在等待输入(状态 S 代表睡眠), xclock 进程也是如此。 ps 命令正在运行(状态 R 代表正在运行)。

您会发现其它一些有用的命令,包括:

info cmd_name
显示有关名为 cmd_name 命令的信息。尝试用 info info 找出有关 info 文档系统的信息。
man cmd_name
是到有关名为 cmd_name 命令的联机手册(man)页的接口。一些信息能以 info 的格式查阅,而有些信息只能以手册页的格式查阅。请试着用 man man 找出有关手册页的更多信息。




回页首


挂装 CD-ROM

在 Linux 和 UNIX 系统上,所有文件都是作为一个大型树(以 / 为根)的一部分访问的。要访问 CD-ROM 上的文件,需要将 CD-ROM 设备挂装在文件树中的某个挂装点。如果分发版安装了自动挂装(automount)包,那么这个步骤可自动进行。无论如何安装过程可能总是能为您完成一些工作,这样可以很容易地挂装 CD-ROM 设备。

对于本示例,我们将使用 SuSE Linux 7.3 系统,然后会指出 Red Hat Linux 的不同之处。通过研究三个命令及其输出,让我们看看这一工作是如何全部“粘合”在一起的:


清单 1. 挂装 CD-ROM
echidna:~ # cat /etc/fstab
/dev/hda9       /      reiserfs        defaults 1 1
/dev/cdrecorder /media/cdrecorder      auto    ro,noauto,user,exec 0 0
/dev/cdrom    /media/cdrom   auto    ro,noauto,user,exec 0 0
devpts  /dev/pts       devpts  defaults 0 0
/dev/hda7       /download      ext2    defaults 1 2
/dev/fd0        /media/floppy  auto    noauto,user,sync 0 0
proc    /proc   proc   defaults 0 0
usbdevfs        /proc/bus/usb  usbdevfs        defaults,noauto 0 0
/dev/hda6       /rh72  ext2    defaults 1 2
/dev/hda1       /windows/C     ntfs    ro,noauto,user,umask=022 0 2
/dev/hda5       /windows/D     vfat    noauto,user 0 2
/dev/hda8       swap   swap    pri=42 0 0
echidna:~ # ls /
.    boot       dev       floppy  media  proc sbin  var
..   cdrecorder  download  home   mnt    rh72  tmp   windows
bin  cdrom       etc      lib     opt    root  usr
echidna:~ # ls -l /cdrom
lrwxrwxrwx    1 root     root          12 Apr 19 09:21 /cdrom -> /media/cdrom
echidna:~ #

cat 命令复制并写文件。如果未给定输出文件,那么输出将被导向标准输出 - 通常是终端窗口。Linux 系统的许多设置都存储在 /etc 目录中。在这些设置中有个文件包含了有关文件系统的描述性信息的表。清单 1 中的第三行输出表明 CD-ROM 设备(/dev/cdrom)将挂装在 /media/cdrom 目录下,除非 mount 命令另外指定了目录。

Linux 也有到目录和文件的快捷方式的概念,这些快捷方式称为 符号链接。SuSE Linux 为我们创建了一个快捷方式,以使对 CD-ROM 的访问更容易。让我们使用 ls 命令来显示 / 目录的内容。请记住:/ 是文件系统的根,不要与 /root 混淆起来,后者是 root 用户的主目录。从清单 1 中的输出我们可以看到 / 目录包含一个名为 cdrom 的项。

现在我们再次使用 ls 命令,但是带有 -l (用于长输出)标志和名称 /cdrom ,以显示关于该项的更多信息。从输出中的日期和时间戳记后面的 -> 可以看出:这是一个到 /media/cdrom 目录的符号链接。这意味着我们可以在任何本应使用 /media/cdrom 的地方使用 /cdrom。

在挂装 CD-ROM 之前,您可能希望尝试显示 /cdrom 目录的内容。试着输入 ls /cdrom 命令。如果还未挂装 CD-ROM ,那么您将看到 .(/media/cdrom 目录本身)和 .. 项(/media 目录,/media/cdrom 的父目录)。通常将在诸如 /media/cdrom 这样的空目录上挂装设备。如果碰巧在包含文件的目录上挂装了设备,那么将无法看到原来的那些文件,直到您卸装了已挂装的文件系统为止。数据仍然在那,但是不能访问。

最后,我们准备挂装 CD-ROM。将光盘插入到驱动器,关闭托盘,输入挂装命令: echidna:~ # mount /cdrom

如果一切正常,CD-ROM 驱动器将旋转一会,然后返回命令提示符。就是这样了!请注意,本来您应当输入以下命令来得到同样的结果: mount /media/cdrom

一旦挂装了 CD,就可以使用该光盘上的文件,因为它们现在是文件系统的一部分。使用 ls 命令,可以显示 Software Evaluation Kit 光盘 1 中的内容:


清单 2. 显示 Software Evaluation Kit 光盘 1 中的内容
echidna:~ # ls /cdrom
.            contents.disc g2458531    sg245850  sg246228  template.css
..           db72pf5u      g2458611    sg245968  sg246261  wasi401u
autopp.ini   devcon        g2458621    sg245994  sg246264
autorun.exe  eclipswp      g2458631    sg246049  sg246277
autorun.inf  g245141b      index.html  sg246134  sg246299
echidna:~ #

Red Hat Linux 挂装的不同之处

还记得我们早先提到的名为 /etc/fstab 的文件吗?那好,下面是它在 Red Hat Linux 7.2 中可能出现的形式:


清单 3. 显示 /etc/fstab
LABEL=/         /              ext3    defaults       1 1
none            /dev/pts       devpts  gid=5,mode=620 0 0
/dev/hda7       /download      ext2    defaults       1 2
none            /proc          proc    defaults       0 0
none            /dev/shm       tmpfs   defaults       0 0
/dev/hda8       swap           swap    defaults       0 0
/dev/cdrom      /mnt/cdrom     iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0        /mnt/floppy    auto    noauto,owner,kudzu 0 0

Red Hat 选择将 CD-ROM 设备挂装在 /mnt/cdrom 上而不是挂装 /media/cdrom 上。如果在根目录中输入 ls / 命令,那么将看不到 cdrom 项。Red Hat 安装不会像 SuSE 安装那样创建一个符号链接。要创建指向 /mnt/cdrom 名为 /cdrom 的符号链接,请输入这个命令:

ln -s /mnt/cdrom /cdrom

要除去这样的链接,请输入 rm 命令:

rm /cdrom

如果 Red Hat 自动挂装没有为您自动挂装 CD-ROM,可以使用挂装命令:

mount /mnt/cdrom

或者,如果创建了一个类似 /cdrom 的符号链接,可以替换它。





回页首


卸装并弹出 CD-ROM

挂装 CD-ROM 后,Linux 会锁定 CD,这样就不能用 Eject 按钮弹出它。但是,当不再需要光盘时,如果已将 /cdrom 作为符号链接,请使用 umount /cdrom 来卸装它(请注意,拼写 umountu 之后没有 n !)。仅当无用户正在使用该光盘时该命令才会成功,该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。

还可以使用 eject /cdrom 来同时卸装文件系统并弹出光盘。

如果未将 /cdrom 作为符号链接,则可以使用 umount /media/cdrom (SuSE)或 umount /mnt/cdrom (Red Hat)来代替。





回页首


注销

要从 SuSE Linux 7.3 中进行注销,请单击 Start Application,然后注销,或者只需在图 10 所示的面板上单击注销图标。


图 10. KDE 注销图标
KDE 注销图标

要从 Red Hat Linux 7.2 进行注销,请单击主菜单,然后单击 Logout。如果希望面板上出现注销图标,要添加一个很容易。在面板上某处单击鼠标右键,选择 Panel -> Add to panel -> Log out button,如图 11 所示。


图 11. 添加 GNOME 注销图标
添加 GNOME 注销图标

注销图标将被添加到面板上,如图 12 所示。


图 12. GNOME 注销图标
GNOME 注销图标

要保护您的终端不被注销,请单击上锁(Padlock)图标来锁定屏幕。要给屏幕解锁,则需要提供登录密码。

:在一些运行 KDE 的 SuSE 系统上,您可以锁定屏幕但却不能用您的密码解锁。第一次发生这种情况时,您可能得关闭机器,然后重新启动。为防止今后再发生这种情况,可以使 /etc/pam.d 中的 kscreensaver 和 xscreensaver 一样。例如,如果想将现有的 kscreensaver 保存为 kscreensaver.original,并确保新的 kscreensaver 拥有与其复制原本 xscreensaver 一样的时间戳记,那么请用 root 用户身份登录并使用以下命令:

cd /etc/pam.d
mv kscreensaver kscreensaver.original
cp -p xscreensaver kscreensaver





回页首


切换到另一个用户标识

通过注销当前的用户标识并以新的用户标识登录,可以随时切换到另一个用户标识。但是如果只需以另一个用户身份快捷地运行一些命令,那么该怎么做呢?Linux 以 su (替代用户)命令的形式提供了一个解决方案,它允许临时地以另一个用户身份运行命令。这通常用于要求 root 访问的任务。事实上,如果使用终端程序(如 telnet)以远程的方式连接到系统,那么许多 Linux 分发版将阻止您以 root 用户身份注册。这是个很好的安全性措施,而且我们希望您最好不要违背这一策略。而且,您应该以非特权用户身份注册,然后使用 su 命令来成为 root 用户。

那么让我们假设您已登录,正看着终端窗口,而且您不是 root 用户,但是需要以 root 用户身份运行一个命令。完成这项任务的两个最常见的 su 形式是:

su
su -

第一种形式(没有 - 符号)只是将您切换成 root 用户,但是不更改环境变量,包括路径。第二种形式使用了 - 符号,如果您真的喜欢输入额外字母的话,也可以输入 -l-login 。这样使替代用户的登录启动文件成为可读的,从而允许设置诸如路径、环境和提示符此类的东西。清单 4 显示了 SuSE 7.3 系统上这两种形式的示例。在每种情形中,我们都使用了 pwd (打印工作目录)命令来显示当前工作目录。请注意提示符是如何有所不同的。如果想了解更多的有关如何定制自己的提示符以及是什么使得这些提示符名符其实的信息,请查阅“ Prompt magic”技巧文章( developerWorks,2000 年 9 月)。


清单 4. 切换到 root 用户
ian3@echidna:~> su
Password:
echidna:/home/ian3 #pwd
/home/ian3
ian3@echidna:~> su -
Password:
echidna:~ # pwd
/root

您会发现,要切换到 root 用户必须提供密码,这一点都不奇怪。您还可以使用 su 命令来切换到另一个非 root 用户。例如:

su - db2inst1

如果您已经是 root 用户了,则无需提供密码,但是如果您不是 root 用户,则必须提供正确的密码。

要返回到原先的标识,如果您正在使用 bash shell 的话,那么只需按 Ctrl-d 或输入 exit ,然后按 Enter 键,在大多数 Linux 系统上都缺省使用 bash shell。





回页首


以另一个用户身份使用 GUI 应用程序

当我们在 前一节中讨论 su 命令时,您可能已经注意到了,我们只运行了那些在终端窗口中显示输出的命令。根据 Linux 发行版,您可能必须要采取一些额外的步骤以便能运行 GUI 应用程序。Linux 上的 GUI 应用程序使用 X 窗口系统,它旨在允许多个用户使用视窗化的应用程序通过网络访问一台计算机。对于只有单个用户的 Linux 系统来说,适宜采取以下步骤,但是要记住 X 窗口系统的网络继承性,那样就不会无意中暴露您的系统并且允许任意的网络用户在您的系统上打开窗口。

X 显示器是通过这种格式“ 主机名:显示器号.屏幕号”的名字来知晓的。对于运行在诸如 PC 这样的工作站上的 Linux 来说,通常只有一个带单一屏幕的显示器。在这种情况下, 显示器名称可能会,也往往会被省略掉,因此显示器就是所谓的 :0.0。我们假设您阅读本文时正在使用图形界面登录,那么您的启动程序应该已经为您设置了 DISPLAY 环境变量。但是,当您使用 su 切换到另一个用户时,并不会设置该变量。清单 5 显示了如何使用 echo 命令来显示 DISPLAY 环境变量,接着显示了如何切换到另一个用户并设法启动 xclock 应用程序,开始使用空白的 DISPLAY 环境变量,然后使用被设置成 :0.0 的值。


清单 5. 设法启动 xclock
ian3@echidna:~> whoami
ian3
ian3@echidna:~> echo $DISPLAY
:0.0
ian3@echidna:~> su - db2inst1
Password:
db2inst1@echidna:~> echo $DISPLAY
db2inst1@echidna:~> xclock
Error: Can't open display:
db2inst1@echidna:~> DISPLAY=:0.0
db2inst1@echidna:~> export DISPLAY
db2inst1@echidna:~> echo $DISPLAY
:0.0
db2inst1@echidna:~> xclock
Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: :0.0
db2inst1@echidna:~>

让我们了解一下这里正在发生什么。在这个例子中,用户 ian3 登录到系统,将其 DISPLAY 环境设置成如我们期望的 :0.0。当 ian3 切换到用户 db2inst1 时,并未设置 DISPLAY 环境变量,启动 xclock 的尝试失败,因为该应用程序不能打开显示器。

因此替代用户 db2inst1 设置了 DISPLAY 环境变量并将其导出,这样它就可以用于可能从这个终端窗口启动的其它 shell 了。请注意,设置和导出环境变量没有使用前导的 $ 符号,而显示或在别的地方使用该值时则使用了该符号。然而,即使设置了环境变量,xclock 仍然失败了。

第二次失败的原因在于 X 的客户机/服务器本质。虽然 db2inst1 是在该系统仅有的显示器上的窗口中运行,但该显示器实际上还是归最初登录的用户(在本例中是 ian3)所有。对 ian3 而言,这个问题最简单的解决方案是:使用 xhost 命令使该系统上的其他用户能使用这个显示器。在桌面上打开另一个终端窗口并输入这个命令:

xhost +local:

请注意尾部的冒号(:)。这将允许同一系统上的其他用户连接到 X 服务器并打开窗口。在给出的示例中,运行 db2inst1 的窗口现在可以启动 xclock 或其它 X 应用程序。

有关使用 xhost 的更多详细信息,可以使用 info xhostman xhost 命令来查看联机手册页。如果您对 X 连接的安全性感兴趣,那么请从 Xsecure 手册页开始入手。



参考资料



关于作者

Ian Shields 目前正在为 developerWorks Linux 专区研究 Linux 技术,他是 IBM 位于北卡罗莱那州 Research Triangle Park 的一名高级程序员。他于 1973 年加入 IBM 位于澳大利亚堪培拉的分公司,担任系统工程师,之后在加拿大蒙特利尔和北卡罗莱那州 RTP 从事通信系统和普及计算方面的工作。他提出几项专利申请,其中的七项已通过申请。他的大学本科学位是 Australian National University 的纯数学和哲学。他已经从北卡罗莱那州立大学获得了计算机科学硕士学位,现在,他正在那里攻读博士学位。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款