执行程式: 多工与 Session

2/9/2008来源:Oracle教程人气:5215


  要执行一个程式, 就像 DOS 一样键入它的名字就可以了. 假如说这个程式被放在 PATH(第四节) 指定的目录 (第二节), 那麽该程式就会被启动. 例外的是, linux 不像 DOS可以执行放在现行目录下的程式 (.) , 除非 . 已经加入 PATH 中了. 若要执行现行目录下的程式, 可以这样做: ./<PRog>.
  
  这是一个标准命令的格式:
   $ command -s1 -s2 ... -sn par1 par2 ... parn <input >output
  -s1 , -s2 ... -sn 是命令选项, parn 是程式参数. 我们可以在同一行上键入数个命令:
   $ command1 ; command2 ; ... ; commandn
  这就是执行命令的方法, 但是我们可以更进一步. 一个使我们使用 Linux 的主要原因是, 它是一个多工的系统 -- 它可以同时执行数个程式 (以下, '程式'用'行程'代替)你可以将一个原本在背景执行的行程提升到前景并继续执行. 而且, Linux 可以使你有多个 session : 这就像同时有好几台电脑在工作!
  
  - - 切换 session 1..8:
   $ <ALT-F1> ... <ALT-F8>.
  - - 开始一个新的 session , 但不离开原本 session :
   $ su - <loginname>
  例如:
   $ su - root
  这相当有用. 比如, 当你要 mount 一个磁碟(机) 时. 因为只有 root可以作这件事.
  - - 结束一个 session:
   $ exit
  - - 在前景执行一个行程:
   $ progname [-switches] [parameters] [<input] [>output]
  - - 在背景启动一个行程(在背景执行) 要加上 '&' 这个符号:
   $ progname [-switches] [parameters] [<input] [>output] &
  - - 查看有多少行程正在执行:
   $ ps
  这样会列出一个表格. 每一个行程都会有一个 PID 来识别 (一个数字).
  - - 杀掉一个行程:
   $ kill <PID>
  有时後你必需用这个方法来结束一些行程 (当你不知道怎样正确结束时 :) 一个行程或许要用以下方法才可以结束:
   $ kill -15 <PID>
   $ kill -9 <PID>
  此外, shell (像 COMMAND.COM 相等的东西) 答应你暂停某个行程的执行, 或是把前景换到背景执行, 背景换来前景. 我们用'工作'来称呼行程.
  - - 查看有多少工做:
   $ jobs
  这样列出来的工作是以一个 shell 分配的数字来区别的, 而不是用 PID.
  - - 暂停一个前景的行程:
   $ <CTRL-C>
  (但不总是有效 :p )
  - - 暂停前景的程式:
   $ <CTRL-Z>
  (ditto)
  - - 将一个被暂停的程式移到背景继续执行:
   $ bg <job>
  - - 把一个背景执行中的程式提升到前景:
   $ fg <job>
  - - 再一次的, 要砍掉一个行程:
   $ kill %<job>
  这里的 <job> 可能是 1, 2, 3, ... 有了这些命令你就可以在同一个时间格式化磁碟,压缩档案, 编译一个程式, 还可以解压缩, 而且, 你仍然还是看到提示号和游标在等待你的命令. 不妨在 DOS 下试试看这麽做吧!! 在 Windows 下也试试, 比较一下它们效率的不同, 然後你就会知道你的选择是否正确了.