怎样执行在Linux上运行应用程序
- 格式:doc
- 大小:312.50 KB
- 文档页数:7
《 LINUX系统级应用》课程实验指导书一.实验总学时(课外学时/课内学时):4/6 总学分:2.5(课程)必开实验个数: 4 选开实验个数:2二.适用专业:计算机网络技术(专科)三.三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程及实验结果在实验现场逐一检查考核。
四.配套的实验教材或指导书:自编实验指导书五. 实验项目:实验1 UNIX基本操作1、实验目的掌握UNIX(LINUX)系统的基本使用方法:系统启动、注销、关闭和关机;帐号管理;文件系统的日常管理;文件系统的权限控制。
2、实验工具及环境UNIX(LINUX)系统网络环境或单机。
3、实验计划学时4学时上机实际操作。
4、实验内容及操作步骤⑴系统启动和关闭①使用自己的账户登录UNIX系统,查看系统提示符确定自己使用的shell程序类型别。
◎开机后,系统自检启动后提示login:(输入:root↙)password:(输入:用户口令↙,root用户为redhat)◎查看/etc/passwd文件可以获得用户使用的shell#grep $LOGNAME /etc/passwd↙可能的显示为:user001:*:200:50::/usr/user001:/bin/sh请思考上述命令怎样得到了当前使用的shell类型的?使用下面的命令也可以查看当前shell:#echo $SHELL②注销和关机命令。
◎用户注销使用:$exit↙或$<ctrl>+<D>↙或$logout↙◎超级用户关机使用:#shutdown↙该命令将结束所有的进程,当执行此命令后系统提示“Safe to Power off or Press Any Key to Reboot”时可以关闭电源或按任一键重启系统。
◎haltsys(halt),reboot只能由超级用户在单用户模式下使用。
⑵帐号管理①添加用户,删除用户,修改个人口令后重新进行登录;◎添加用户的shell命令:#useradd user08↙(Linux系统中可以为adduser)上述命令采用默认属性,UNIX也可以使用选项来指定创建帐户的属性:-c comment用户说明-d directory 指定用户主目录-m 若用户的起始目录不存在则创建-g group指定用户所属组-s shell 指定用户使用的shell-u uid为用户分配标识◎修改口令对linux系统而言,用adduser增加的用户应该随即用passwd命令来修改口令。
练习题一、选择题1. Linux 最早是由计算机爱好者 B 开发的。
A. Richard PetersenB. Linus TorvaldsC. Rob PickD. Linux Sarwar2. 下列 C 是自由软件。
A. Windows XPB. UNIXC. LinuxD. Windows 20003. 下列 B 不是Linux 的特点。
A. 多任务B. 单用户C. 设备独立性D. 开放性4. Linux 的内核版本2.3.20 是 A 的版本。
A. 不稳定B. 稳定的C. 第三次修订D. 第二次修订二、填空题1. GUN 的含义是:GNU's Not UNIX。
2. Linux 一般有3 个主要部分:内核(kernel)、命令解释层(Shell 或其他操作环境)、实用工具。
三、简答题(略)1. 简述Red Hat Linux 系统的特点。
2. 简述一些较为知名的Linux 发行版本。
练习题一、选择题1. Linux 安装过程中的硬盘分区工具是 D 。
A. PQmagicB. FDISKC. FIPSD. Disk Druid2. Linux 的根分区系统类型是 C 。
A. FATl6B. FAT32C. ext3D. NTFS二、填空题1. 安装Linux 最少需要两个分区,分别是 swap 交换分区和/(根)分区。
2. Linux 默认的系统管理员账号是 root 。
3. X-Window System 由三部分构成:X Server、X Client 和通信通道。
三、简答题(略)1. Linux 有哪些安装方式2. 安装Red Hat Linux 系统要做哪些准备工作3. 安装Red Hat Linux 系统的基本磁盘分区有哪些4. Red Hat Linux 系统支持的文件类型有哪些练习题一、选择题1. C 命令能用来查找在文件TESTFILE 中包含四个字符的行A. grep’’TESTFILEB. grep’….’TESTFILEC. grep’^$’TESTFILED. grep’^….$’TESTFILE2. B 命令用来显示/home 及其子目录下的文件名。
Make命令完全详解教程无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。
不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。
利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。
而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。
而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
因此,有效的利用make和makefile工具可以大大提高项目开发的效率。
同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。
一、Make程序的命令行选项和参数Make命令参数的典型序列如下所示:make [-f makefile文件名][选项][宏定义][目标]这里用[]括起来的表示是可选的。
命令行选项由破折号“–”指明,后面跟选项,如也可以每个选项使用一个破折号,如甚至混合使用也行,如Make命令本身的命令行选项较多,这里只介绍在开发程序时最为常用的三个,它们是:–k:如果使用该选项,即使make程序遇到错误也会继续向下运行;如果没有该选项,在遇到第一个错误时make程序马上就会停止,那么后面的错误情况就不得而知了。
我们可以利用这个选项来查出所有有编译问题的源文件。
–n:该选项使make程序进入非执行模式,也就是说将原来应该执行的命令输出,而不是执行。
–f :指定作为makefile的文件的名称。
如果不用该选项,那么make程序首先在当前目录查找名为makefile的文件,如果没有找到,它就会转而查找名为Makefile的文件。
如果您在Linux下使用GNU Make的话,它会首先查找GNUmakefile,之后再搜索makefile和Makefile。
linux系统如何安装软件 (详细文字教程)在Linux中安装软件时,我们经常要考虑到这样几个个问题:(1).怎样安装软件;(2).软件安装在什么地方;(3).如何卸载删除不要的软件......下面,我们就一起来认识一下这些方面的问题。
一.认识Linux应用软件安装包通常Linux应用软件的安装包有三种:1) tar包,如software-1.2.3-1.tar.gz。
它是使用UNIX系统的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。
它是Redhat Linux提供的一种包封装格式。
(现在用的全称叫RPM Package Manager,以前叫Redhat Package Manager)3) dpkg包,如software-1.2.3-1.deb。
它是Debain Linux提供的一种包封装格式。
而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型例如:1) software-1.2.3-1.tar.gz 意味着:软件名称:software版本号:1.2.3修正版本:1类型:tar.gz,说明是一个tar包。
2) sfotware-1.2.3-1.i386.rpm软件名称:software版本号:1.2.3修正版本:1可用平台:i386,适用于Intel 80x86平台。
类型:rpm,说明是一个rpm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。
在后面会详细说明。
而software-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
二、了解包里的内容:一个Linux应用程序的软件包中可以包含两种不同的内容:1) 一种就是可执行文件,也就是解开包后就可以直接运行的。
在Windows中所有的软件包都是这种类型。
安装完这个程序后,你就可以使用,但你看不到源程序。
而且下载时要注意这个软件是否是你所使用的平台,否则将无法正常安装。
如何执行在Linux上运行的应用程序关键字:Linux 先决条件 要充分理解本文,必须具备Windows 环境下桌面应用程序的工作经验,我认为读者对如何使用Linux 桌面有一个基本的了解。
使用一个运行的Linux 计算来机探讨本文的概念和示例是很有帮助的。
概述 有时候第一次在Linux 上运行一个应用程序需要一点额外工作。
有些应用程序,比如服务器服务,可能无法安装为服务,因此您需要从命令行启动这些应用程序。
对于启动这些应用程序的用户帐户而言,需要在应用程序文件中设置执行许可标志(x)。
运行用户空间应用程序 Linux 在内核空间或用户空间运行进程。
用户空间是操作系统的区域,应用程序通常在此运行。
简单地说,每个用户帐户有其自己的用户空间,应用程序在这个领域内运行。
默认情况下,只有root 用户有权访问内核空间。
root 用户是Linux 中的超级用户,相当于Windows 中的管理员帐户。
在root 用户帐户下运行应用程序可能会引起安全风险,是不可取的。
很多服务器服务需要root 权限启动服务。
然而,服务启动后,root 帐户通常会将其移至服务帐户。
严格地说,Linux 中的服务帐户才是标准的用户帐户。
主要区别是服务帐户仅用于运行一个服务,而不是为任何实际登录的用户准备的。
设置权限 您可以使用chmod 命令在一个文件中设置执行权限。
在Linux 中,umask 设置通常用来防止下载的文件被执行,也有充分的理由相信,因为它有助于维护Linux 计算机的安全性。
大多数Linux 发行版具有一个值为022 的umask 设置,这意味着,默认情况下一个新文件权限设置为644.权限的数字表示形式采用读(4)、写(2)、执行(1) 的格式。
因此,默认权限为644 的应用程序下载意味着文件所有者有读写权限,而组用户和其他用户只有读权限。
例如,为每个人赋予一个文件的执行权限,使用chmod a+x 命令。
linux kill命令参数及用法详解功能说明:删除执行中的程序或工作。
语法:kill [-s <信息名称或编号>][程序]或kill [-l <信息编号>]补充说明:kill可将指定的信息送至程序。
预设的信息为SIGTERM(15),可将指定程序终止。
若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
程序或工作的编号可利用ps指令或jobs指令查看。
参数:-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
kill命令可以从kill这个词来大致了解下它的作用,是的,它用来杀死(kill)一个进程。
下面是kill命令的详解。
1.作用kill命令用来中止一个进程。
2.格式kill [ -s signal | -p ] [ -a ] p id…kill -l [ signal ]3.参数-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。
4.说明进程是Linux系统中一个非常重要的概念。
Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。
我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
Linux 操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。
交互进程是由一个Shell启动的进程。
交互进程既可以在前台运行,也可以在后台运行。
批处理进程和终端没有联系,是一个进程序列。
监控进程(也称系统守护进程)是Linux系统启动时启动的进程,并在后台运行。
例如,httpd是著名的Apache服务器的监控进程。
kill 命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。
一、开发平台搭建1.引言Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。
而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。
在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源、它包含TCP/IP协议栈、它易集成GUI。
鉴于Linux操作系统在服务器和嵌入式系统领域愈来愈广泛的应用,社会上越来越需要基于Linux操作系统进行编程的开发人员。
浏览许多论坛,经常碰到这样的提问:“现在是不是很流行unix/linux下的c编程?所以想学习一下!但是不知道该从何学起,如何下手!有什么好的建议吗?各位高手!哪些书籍比较合适初学者?在深入浅出的过程中应该看哪些不同层次的书?比如好的网站、论坛请大家赐教!不慎感激!”鉴于读者的需求,在本文中,笔者将对Linux平台下C编程的几个方面进行实例讲解,并力求回答读者们关心的问题,以与读者朋友们进行交流,共同提高。
在本文的连载过程中,有任何问题或建议,您可以给笔者发送email:21cnbao@,您也可以进入笔者的博客参与讨论:/21cnbao。
笔者建议在PC内存足够大的情况下,不要直接安装Linux操作系统,最好把它安装在运行VMWare 虚拟机软件的Windows平台上,如下图:在Linux平台下,可用任意一个文本编辑工具编辑源代码,但笔者建议使用emacs软件,它具备语法高亮、版本控制等附带功能,如下图:2.GCC编译器GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]options为编译选项,GCC总共提供的编译选项超过100个,但只有少数几个会被频繁使用,我们仅对几个常用选项进行介绍。
Wine完全使用指南——从基本到高级关键字: wine 使用一直苦于没有一篇像样的使用指南,原来外国有朋友跟我有同感,既然他捷足先登了,那我只好翻译了。
原文作者说会保持更新,这篇文章是很新的,介绍了很多实用的Wine设置方法,非常全面,无论新手还是老鸟都值得一读。
原文:/doku.php/wine:winestuff我收集到的关于Wine的一些资料如果你像我一样的话,当你第一次使用Wine的时候,就会被Wine的帮助文章现状所困扰。
互联网上确实有很多的HOWTO文章来教你使用一些程序或游戏,但是我找不到一个全面的“Wine初学者教程”来让我真正懂得实际了解和使用Wine所需的基本知识。
我不需要一个教我如何运行半条命2的文章,我需要的是一篇能实实在在教我怎样使用Wine的文章。
最后,我整理了从众多的Wiki、指南、帖子和HOWTO搜集来的资料,写成这篇文章。
虽然这篇文章主要针对在Wine下运行游戏,但是它包括的几乎所有的信息都可以应用到用Wine来运行其它的程序。
一般资料“winecfg”的使用资料特殊配置资料安装资料一般使用资料第三方软件资料高级设置资料1一般资料1.1Wine is not an emulator这个我就不翻译了,没有多少技术介绍。
1.2使用最新的Wine记住最新版的Wine会包含一些旧版本里没有的bug。
在feisty的软件仓库里包含了0.9.33,而最新的Wine是0.9.44(我翻译文章时)。
0.9.33更加稳定,但是最新的版本包含重大的DirectX改进。
有一些不能在0.9.33下运行的游戏能够在0.9.44中很好地运行。
在使用0.9.37到0.9.40之间的某些版本运行KotOR2时,声音在我的系统上崩溃了。
那是最好的有关使用最新版导致棘手问题的好例子。
(译者:我个人还是推荐使用最新版,使用新版本会有更好的运行速度,而且基本上每个bug都会在未来的2~3个版本中被修复)1.3不要从源码编译安装Wine(译者:作者没有说为什么,可能是因为编译要解决的依赖性问题太多了。
Linuxservice进程管理Linux进程基本介绍:1)在Linux中,每个执⾏的程序(代码)都称为⼀个进程。
每⼀个进程都分配⼀个ID号。
2)每⼀个进程,都对应⼀个⽗进程,⽽这个⽗进程可以复制多个⼦进程。
例如www服务器。
3)每个进程都可能以两种⽅式存在的,前台和后台。
所谓前台进程就是⽤户⽬前的屏幕上都可以进⾏操作的。
后台进程则是实际在操作,但由于屏幕上⽆法看到的进程,同城使⽤后台⽅式执⾏。
4)⼀般系统的服务都是以后台进程的⽅式存在,⽽且都会常驻在系统中。
直到关机才结束。
显⽰系统执⾏的进程:基本介绍ps命令是⽤来查看⽬前系统中,有那些正在执⾏,以及他们执⾏的状况。
可以不加任何参数。
ps显⽰的信息选项:字段 说明PID 进程识别号TTY 终端机号TIME 此进程所消耗cpu时间CMD 正在执⾏的命令或进程名——————————————————————————————ps -a: 显⽰当前终端的的所有进程信息ps -u: 以⽤户的格式显⽰进程信息ps -x: 显⽰后台进程运⾏的参数ps详解:1)指令:ps -aux | grep xxx2)指令说明System V 展⽰风格USER:⽤户名称PID:进程号%cpu:进程占⽤cpu的百分⽐%MEM:进程占⽤物理内存的百分⽐VSZ:进程占⽤的虚拟内存的⼤⼩(单位:KB)RSS:进程占⽤的物理内存的⼤⼩(单位:KB)TT:终端的名称,缩写STAT:进程状态,其中S-睡眠,s-表⽰该进程是会话的先导进程,N-表⽰进程拥有⽐普通优先级更低的优先级,R-正在运⾏,D-短期等待,Z-僵死进程,T-被跟踪或者被停⽌等等STARTED:进程的启动时间TIME:cpu时间,即进程使⽤cpu的总时间COMMAND:启动进程所⽤的命令和参数,如果过长会被截断显⽰显⽰系统执⾏的进程应⽤实例:要求:以全格式显⽰当时所有的进程,查看进程的⽗进程。
ps -ef是以全格式显⽰当前所有的进程 -e 显⽰所有进程。
nohup命令的⽤法在应⽤Unix/Linux时,我们⼀般想让某个程序在后台运⾏,于是我们将常会⽤ & 在程序结尾来让程序⾃动运⾏。
⽐如我们要运⾏mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。
可是有很多程序并不想mysqld⼀样,这样我们就需要nohup命令,怎样使⽤nohup 命令呢?这⾥讲解nohup命令的⼀些⽤法。
nohup /root/start.sh &在shell中回车后提⽰:[~]$ appending output to nohup.out原程序的的标准输出被⾃动改向到当前⽬录下的nohup.out⽂件,起到了log的作⽤。
但是有时候在这⼀步会有问题,当把终端关闭后,进程会⾃动被关闭,察看nohup.out可以看到在关闭终端瞬间服务⾃动关闭。
咨询红旗Linux⼯程师后,他也不得其解,在我的终端上执⾏后,他启动的进程竟然在关闭终端后依然运⾏。
在第⼆遍给我演⽰时,我才发现我和他操作终端时的⼀个细节不同:他是在当shell中提⽰了nohup成功后还需要按终端上键盘任意键退回到shell输⼊命令窗⼝,然后通过在shell中输⼊exit来退出终端;⽽我是每次在nohup执⾏成功后直接点关闭程序按钮关闭终端.。
所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要⼀起shutdown。
这个细节有⼈和我⼀样没注意到,所以在这⼉记录⼀下了。
附:nohup命令参考nohup 命令⽤途:不挂断地运⾏命令。
语法:nohup Command [ Arg … ] [ & ]描述:nohup 命令运⾏由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。
在注销后使⽤ nohup 命令运⾏后台中的程序。
要运⾏后台中的 nohup 命令,添加 & (表⽰”and”的符号)到命令的尾部。
Linux操作系统中RPM命令参数的使用详解在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM)。
此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。
由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。
下面就给大家介绍一下它的具体使用方法。
[root@ford /root] # rpm -qa | more1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看:rpm -qpi Linux-1.4-6.i368.rpm系统将会列出这个软件包的详细资料,包括含有多少个文件、各文件名称、文件大小、创建时间、编译日期等信息。
2.上面列出的所有文件在安装时不一定全部安装,就像Windows下程序的安装方式分为典型、完全、自定义一样,Linux也会让你选择安装方式,此时我们可以用下面这条命令查看软件包将会在系统里安装哪些部分,以方便我们的选择:rpm -qpl Linux-1.4-6.i368.rpm3.选择安装方式后,开始安装。
我们可以用rpm-ivh Linux-1.4-6.i368.rpm命令安装此软件。
在安装过程中,若系统提示此软件已安装过或因其他原因无法继续安装,但若我们确实想执行安装命令,可以在 -ivh后加一参数“-replacepkgs”:rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm4.有时我们卸载某个安装过的软件,只需执行rpm-e <文件名>命令即可。
5.对低版本软件进行升级是提高其功能的好办法,这样可以省去我们卸载后再安装新软件的麻烦,要升级某个软件,只须执行如下命令:rpm -uvh <文件名>,注意:此时的文件名必须是要升级软件的升级补丁6.另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。
linux上应用程序的执行机制1.父进程的行为: 复制,等待执行应用程序的方式有很多,从shell中执行是一种常见的情况。
交互式shell是一个进程(所有的进程都由pid号为1的init进程fork得到,关于这个话题涉及到Linux启动和初始化,以及idle进程等,有空再说),当在用户在shell中敲入./test执行程序时,shell先fork()出一个子进程(这也是很多文章中说的子shell),并且wait()这个子进程结束,所以当test执行结束后,又回到了shell等待用户输入(如果创建的是所谓的后台进程,shell则不会等待子进程结束,而直接继续往下执行)。
所以shell进程的主要工作是复制一个新的进程,并等待它的结束。
2.子进程的行为: "执行"应用程序2.1 execve()另一方面,在子进程中会调用execve()加载test并开始执行。
这是test被执行的关键,下面我们详细分析一下。
execve()是操作系统提供的非常重要的一个系统调用,在很多文章中被称为exec()系统调用(注意和shell内部exec命令不一样),其实在Linux中并没有exec()这个系统调用,exec只是用来描述一组函数,它们都以exec开头,分别是:#includeintexecl(const char *path, const char *arg, ...);intexeclp(const char *file, const char *arg, ...);intexecle(const char *path, const char *arg, ..., char *constenvp[]);intexecv(const char *path, char *constargv[]);intexecvp(const char *file, char *constargv[]);intexecve(const char *path, char *constargv[], char *constenvp[]);这几个都是都是libc中经过包装的的库函数,最后通过系统调用execve()实现(#define__NR_evecve 11,编号11的系统调用)。
linux系统如何安装软件 (详细文字教程)在Linux中安装软件时,我们经常要考虑到这样几个个问题:(1).怎样安装软件;(2).软件安装在什么地方;(3).如何卸载删除不要的软件......下面,我们就一起来认识一下这些方面的问题。
一.认识Linu x应用软件安装包通常Linu x应用软件的安装包有三种:1) tar包,如softw are-1.2.3-1.tar.gz。
它是使用UN IX系统的打包工具t ar打包的。
2) rpm包,如softw are-1.2.3-1.i386.rpm。
它是Redh at Linux提供的一种包封装格式。
(现在用的全称叫RPMPackag e Manage r,以前叫Red hat Packag e Manage r)3) dpkg包,如softw are-1.2.3-1.deb。
它是Deba in Linux提供的一种包封装格式。
而且,大多数Lin ux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型例如:1) softwa re-1.2.3-1.tar.gz 意味着:软件名称:softwa re版本号:1.2.3修正版本:1类型:tar.gz,说明是一个t ar包。
2) sfotwa re-1.2.3-1.i386.rpm软件名称:softwa re版本号:1.2.3修正版本:1可用平台:i386,适用于Int el 80x86平台。
类型:rpm,说明是一个r pm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。
在后面会详细说明。
而softw are-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
二、了解包里的内容:一个Linu x应用程序的软件包中可以包含两种不同的内容:1) 一种就是可执行文件,也就是解开包后就可以直接运行的。
国家开放大学《操作系统》形考任务(简答题)参考答案1.简述操作系统的定义。
参考答案:操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。
2.在计算机系统中操作系统处于什么地位?参考答案:操作系统是裸机之上的第一层软件,与硬件关系尤为密切。
它不仅对硬件资源直接实施控制、管理,而且其很多功能的完成是与硬件动作配合实现的,如中断系统。
操作系统的运行需要有良好的硬件环境。
操作系统是整个计算机系统的控制管理中心,其他所有软件都建立在操作系统之上。
操作系统对它们既具有支配权力,又为其运行建造必备环境。
在裸机上安装了操作系统后,就为其他软件的运行和用户使用提供了工作环境。
3.操作系统的主要功能有哪些?参考答案:操作系统的主要功能包括:存储管理,进程和处理机管理,文件管理,设备管理以及用户接口管理。
4.操作系统一般为用户提供了哪三种界面?各有什么特点?参考答案:操作系统一般为用户提供的三种界面是:图形用户接口、命令行接口和程序接口。
图形用户接口:用户利用鼠标、窗口、菜单、图标等图形界面工具,可以直观、方便、有效地使用系统服务和各种应用程序及实用工具。
命令行接口:在提示符之后用户从键盘上输入命令,命令解释程序接收并解释这些命令,然后把它们传递给操作系统内部的程序,执行相应的功能。
程序接口:也称系统调用接口。
是操作系统内核与用户程序、应用程序之间的接口。
5.操作系统主要有哪三种基本类型?各有什么特点?参考答案:主要有以下三种基本类型:多道批处理系统、分时系统和实时系统。
多道批处理系统的特点是多道和成批。
分时系统的特点是同时性、交互性、独立性和及时性。
实时系统一般为具有特殊用途的专用系统,其特点是交互能力较弱、响应时间更严格、对可靠性要求更高。
6.使用虚拟机,有什么优势和不足?参考答案:采用虚拟机的优点主要有:在一台机器上可同时运行多个操作系统,方便用户使用。
⽤qemu-user在armlinux机器上运⾏amd64x86程序1. qemu-user 是什么本来, 对于 QEmu, 我只知道它是⼀个模拟器, 可以像 VirtualBox/VMWare 那样跑⼀个操作系统, 只不过 QEmu 可以在 AMD64 上⾯跑针对PowerPC, ARM 的操作系统, 当然, CPU 指令是解释执⾏的, 相对来说⽐较慢.但是前⼏天折腾 CentOS/Fedora 上⾯的rpm构建⼯具时才发现, 原来 QEmu 还有⼀种运⾏⽅式, 那就是跟wine的运⾏⽅式相同: 直接运⾏程序⽂件.在这种模式下, 这个针对 PowerPC或者ARM编译的程序, 就⽐较像⼀个本地程序, 它跟本机的Linux内核打交道, 进⾏系统调⽤, 访问本地⽂件(其实是通过qemu进⾏)和本地设备.在 QEmu 的术语中, 前⾯那种运⾏整个操作系统的⽅式, 称为"full system emulation", 在 Ubuntu/CentoS 由软件包qemu-system-xxx (⽐如qemu-system-ppc, qemu-system-aarch64, qemu-system-arm)提供功能;后⾯这种运⾏单个程序⽂件的⽅式, 称为"user mode emulation",由软件包qemu-user或者qemu-user-static提供功能(注意没有细分为qemu-user-ppc, qemu-user-arm, 不过这也许只是因为这些模拟器⽂件都不⼤, 就揉到了⼀个包⾥⾯.⾄于qemu-user和qemu-user-static的区别, 现在只需要知道后者是静态链接版本, ⾄于在什么场景下需要⽤到哪⼀种, 以后再来说).1.1. 举个例⼦这⾥举个例⼦说明⼀下应⽤场景:在树莓派 2 (CPU是armv7) 上⾯跑针对 i386 编译的linux程序.我在命令⾏上⼯作是, 喜欢⽤⼀个叫做的⼩程序 (这类程序我以前介绍过: ), 但它的早期有个问题: 我⽇常⽤的⽐较多的Linux是在树莓派上的Raspbian 8, 但在Linux上只有amd64和386两个版本, 没有针对arm的.这个⼯具⼜是⽤Go语⾔写的, 我对这个语⾔不熟, 也不想去折腾安装⼯具链在树莓派上⾃⾏编译.于是就可以试试这条路: 跑i386的版本$ sudo apt install qemu-user$ wget -c 'https:///junegunn/fzf-bin/releases/download/0.16.3/fzf-0.16.3-linux_386.tgz'$ tar xvf fzf-0.16.3-linux_386.tgz$ file fzf-0.16-3-linux_386fzf-0.16.3-linux_386: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped$ qemu-i386 fzf-0.16.3-linux_386 -husage: fzf [options]Search-x, --extended Extended-search mode(enabled by default; +x or --no-extended to disable)[...]$ history | qemu-i386 fzf-0.16.3-linux_386上⾯倒数第三个命令是检查程序⽂件fzf-0.16.3-linux_386的类型, 从结果看它的确是针对386的ELF⽂件, 并且是静态链接的;倒数第⼆个命令qemu-i386 fzf-0.16.3-linux_386 -h是试着运⾏⼀下, 程序成功地跑起来, 打印除了帮助信息.最后⼀个命令history | qemu-i386 fzf-0.16.3-linux_386是真正在使⽤fzf这个程序的功能.2. ⽤binfmt_misc机制来让启动运⾏更⽅便上⾯虽然把这个程序运⾏起来了, 但命令⾏上需要将qemu-i386放在前⾯, 也就是说实际启动的qemu-i386这个程序, 它再把fzf跑起来.这样并不太⽅便, 尤其fzf这个程序⼀般都不是直接使⽤, ⽽是通过, 等封装脚本来使⽤, 脚本⾥⾯准备好备选数据后再调⽤fzf程序⽂件来让⽤户挑选,我们要⼀⼀修改这些脚本就太⿇烦了.perl/python脚本就不需要这样, 只要第⼀⾏是#!/usr/bin/perl或者#!/usr/bin/env python就可以了.我们能借⽤这个⽅法吗?fzf-0.16.3-linux_386是个⼆进制的可执⾏程序, 我们没办法去修改所谓的"第⼀⾏";对了, 有没有注意到, 安装wine之后, 命令⾏上直接输⼊notepad.exe也是可以直接启动"记事本"程序的, 并不⼀定需要wine notepad.exe才能启动, 这是怎么实现的呢?这就需要⼀种叫做binfmt_misc的机制.binfmt_misc是Linux内核说提供的⼀种扩展机制, 使得更多类型的⽂件得以成为"可执⾏"⽂件.Linux内核本⾝⽀持ELF、a.out、脚本(也就是上⾯所说的第⼀⾏#!指定解释器的⽅式)这集中"可执⾏⽂件".但它还提供了⼀个称为binfmt_misc的内核模块, 通过这个模块可以动态注册⼀些"可执⾏⽂件格式",注册之后我们就可以直接"执⾏"这个程序⽂件了.其实上⾯⽤apt install qemu-user-static安装这个包时, 它的postinstall脚本已经在binfmt_misc中注册了相应的配置, 我们可以通过下⾯的⽅式检查⼀下:$ lsmod | grep binfmtbinfmt_misc 6306 1$ ls /proc/sys/fs/binfmt_misc/python2.7 qemu-cris qemu-mips qemu-ppc64abi32 qemu-sh4eb qemu-x86_64python3.4 qemu-i386 qemu-mipsel qemu-ppc64le qemu-sparc registerqemu-alpha qemu-m68k qemu-ppc qemu-s390x qemu-sparc32plus statusqemu-armeb qemu-microblaze qemu-ppc64 qemu-sh4 qemu-sparc64$ cat /proc/sys/fs/binfmt_misc/qemu-i386enabledinterpreter /usr/bin/qemu-i386-staticflags: OCoffset 0magic 7f454c4601010100000000000000000002000300mask fffffffffffefefffffffffffffffffffeffffff$ xxd fzf-0.16.3-linux_386 | head -20000000: 7f45 4c46 0101 0100 0000 0000 0000 0000 .ELF............0000010: 0200 0300 0100 0000 d090 0908 3400 0000 ............4...$ ./fzf-0.16.3-linux_386 -husage: fzf [options]Search-x, --extended Extended-search mode(enabled by default; +x or --no-extended to disable)[....]解释⼀下上⾯⼏条命令:1. lsmod | grep binfmt: 这是检查内核模块binfmt_misc是否已经加载, 有内容输出说明已经加载了.如果没有加载, 则可以⽤modprobebinfmt_misc来加载它(在当前的很多Linux发⾏版中, ⼀般可以通过sudo systemctl restart systemd-binfmt来启动/重启它, 修改了注册配置也可以通过这条命令来重新加载)2. ls /proc/sys/fs/binfmt_misc/: 这是检查内核中⽬前注册了哪些格式(register和status这两个除外)3. cat /proc/sys/fs/binfmt_misc/qemu-i386: 这是在检查我们所关⼼的与qemu-i386相关的配置, 从输出中可以看到, 对于以7f454c4601010100000000000000000002000300开头的⽂件, 可以调⽤/usr/bin/qemu-i386-static来执⾏(各字段的详细解释可以参见)4. xxd fzf-0.16.3-linux_386 | head -2: 这是检查⼀下我们所想运⾏的程序⽂件的开头⼏个字节是怎样的, 从输出可以看出, 它与上⾯所注册的信息是匹配的5. ./fzf-0.16.3-linux_386 -h: 这是直接运⾏了这个i386程序, 可以看到它能够正确打印出帮助信息关于binfmt_misc的⼀些相关链接:: 如何直接执⾏LuaJIT字节码: 因为Go语⾔不允许第⼀⾏⽤#!/usr/bin/env go, 所以需要另外找⼀个⽅法来将*.go作为脚本运⾏3. 补充说明:现实并没有那么简单/美好虽然在上⾯我们成功运⾏了fzf-0.16.3-linux_386, 但如果你多实验⼏个程序, 就会发现失败⼏率是⽐较⾼的.因为⼤多数程序都会环境有很多依赖, ⽐如动态库依赖、数据⽂件/配置⽂件、⼦进程调⽤、CPU扩展指令集、环境变量、设备⽂件等等, 它们的缺失或者错误都可能导致程序⽆法正常运⾏.很少有只需要单个程序⽂件就能跑起来的(上⾯运⾏的fzf-0.16.3-linux_386是个静态链接版本, Go语⾔写的⼯具⼀般都是静态链接的).对于动态库依赖、数据⽂件/配置⽂件这类⽂件系统层⾯的问题, 虽然表⾯上可以想办法把⽂件补齐, ⽐如Debian/Ubuntu考虑了多架构并存,但其它Linux发⾏版并没有考虑这个问题(有的考虑了x86_64与x86并存), 混合安装也会给问题定位带来诸多困难.所以在实际使⽤中, qemu-user⼤都是通过在⼀个独⽴的⽂件系统中运⾏的.关于qemu与chroot配合的话题下次再展开吧Debian/Ubuntu的动态库都安装在.../lib/<target>-<vendor>-<abi>⽬录下, ⽐如同样⼀个动态库libncurses.so.5.9, 通过libncurses5:armhf包提供的动态库安装在/lib/arm-linux-gnueabihf/libncurses.so.5.9,通过libncurses5:i386包提供的动态库安装在/lib/i386-linux-gnu/libncurses.so.5.9(通过dpkg --add-architecture armhf && apt-get update && apt-get install libc6:armhf这种⽅式可以并⾏安装多种架构的包)qemu-user有⼀个-L path选项, 可以⽤来变更动态库查找路径(/set the elf interpreter prefix to 'path'/): 将程序所需要的动态库都放置到/home/bamanzi/i386-libs/lib⽬录下, 然后⽤qemu-user -L /home/bamanzi/i386-libs ./prog来启动程序, 就会优先到/home/bamanzi/i386-libs/lib查找prog所需要的动态库, ⽽不是主机⾥⾯/etc/ld.so.conf⾥⾯设定的路径(那些路径⾥存放的都是针对主机的动态库, 在我这个例⼦⾥⾯, 就是针对。
kickstart配置文件详解kickstart是什么许多系统管理员宁愿使用自动化的安装方法来安装红帽企业Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇到的问题的答案.Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.如何执行kickstart安装kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过NFS,FTP,HTTP 来执行.要使用kickstart,必须:1.创建一个kickstart文件.2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.3.筹备安装树.4.开始kickstart安装.创建kickstart文件kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别.可以用「Kickstart 配置」应用程序创建它或是自己从头编写.红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件被写入到/root/anaconda-ks.cfg.可以用任何能够把文件保存为ASCII文本的文本编辑器或字处理器来编辑它.首先,在创建kickstart文件时留意下列问题:1.每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为:命令部分,这里应该包括必需的选项.%packages部分,这部分选择需要安装的软件包.%pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的.2.不必需的项目可以被省略.3.如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目).4.以井号("#")开头的行被当作注释行并被忽略.对于kickstart 升级,下列项目是必需的:1.语言2.安装方法3.设备规格(如果这个设备是在安装过程中所需要的)4.键盘设置5.upgrade 关键字6.引导装载程序配置7.如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择).kickstart命令选项下面的选项可以放入kickstart文件.如果喜欢使用图形化的界面来创建kickstart文件,可以使用"Kickstart 配置"应用程序.(注:如果某选项后面跟随了一个等号(=),它后面就必须指定一个值.在示例命令中,括号([])中的选项是命令的可选参数.)autopart(可选)自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义.ignoredisk(可选)导致安装程序忽略指定的磁盘.如果使用自动分区并希望忽略某些磁盘的话,这就很有用.例如,没有ignoredisk,如要试图在SAN-cluster系统里部署,kickstart就会失败,因为安装程序检测到SAN不返回分区表的被动路径(passive path).如果有磁盘的多个路径时,ignoredisk选项也有用处.语法是:ignoredisk --drives=drive1,drive2,...这里driveN是sda,sdb... hda等等中的一个.autostep(可选)和interactive相似,除了它进入下一屏幕,它通常用于调试.--autoscreenshot,安装过程中的每一步都截屏并在安装完成后把图片复制到/root/anaconda-screenshots.这对于制作文档很有用.auth或authconfig(必需)为系统设置验证选项.这和在安装后运行的authconfig命令相似.在缺省情况下,密码通常被加密但不使用影子文件(shadowed).--enablemd5,每个用户口令都使用md5加密.--enablenis,启用NIS支持.在缺省情况下,--enablenis使用在网络上找到的域.域应该总是用--nisdomain=选项手工设置.--nisdomain=,用在NIS服务的NIS域名.--nisserver=,用来提供NIS服务的服务器(默认通过广播).--useshadow或--enableshadow,使用屏蔽口令.--enableldap,在/etc/nsswitch.conf启用LDAP支持,允许系统从LDAP目录获取用户的信息(UIDs,主目录,shell 等等).要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN(distinguished name).--enableldapauth,把LDAP作为一个验证方法使用.这启用了用于验证和更改密码的使用LDAP目录的pam_ldap模块.要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN.--ldapserver=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定所使用的LDAP服务器的名字.这个选项在/etc/ldap.conf文件里设定.--ldapbasedn=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定用户信息存放的LDAP目录树里的DN.这个选项在/etc/ldap.conf文件里设置.--enableldaptls,使用TLS(传输层安全)查寻.该选项允许LDAP在验证前向LDAP服务器发送加密的用户名和口令.--enablekrb5,使用Kerberos 5验证用户.Kerberos自己不知道主目录,UID或shell.如果启用了Kerberos,必须启用LDAP,NIS,Hesiod或者使用/usr/sbin/useradd命令来使这个工作站获知用户的帐号.如果使用这个选项,必须安装pam_krb5软件包.--krb5realm=,工作站所属的Kerberos 5领域.--krb5kdc=,为领域请求提供服务的KDC.如果的领域内有多个KDC,使用逗号(,)来分隔它们.--krb5adminserver=,领域内还运行kadmind的KDC.该服务器处理改变口令以及其它管理请求.如果有不止一个KDC,该服务器必须是主KDC.--enablehesiod,启用Hesiod支持来查找用户主目录,UID 和shell.在网络中设置和使用Hesiod 的更多信息,可以在glibc 软件包里包括的/usr/share/doc/glibc-2.x.x/README.hesiod里找到.Hesiod是使用DNS记录来存储用户,组和其他信息的DNS 的扩展.--hesiodlhs,Hesiod LHS("left-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用.--hesiodrhs,Hesiod RHS("right-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用.--enablesmbauth,启用对SMB服务器(典型的是Samba或Windows服务器)的用户验证.SMB验证支持不知道主目录,UID 或shell.如果启用SMB,必须通过启用LDAP,NIS,Hesiod或者用/usr/sbin/useradd命令来使用户帐号为工作站所知.要使用这个选项,必须安装pam_smb软件包.--smbservers=,用来做SMB验证的服务器名称.要指定不止一个服务器,用逗号(,)来分隔它们.--smbworkgroup=,SMB服务器的工作组名称.--enablecache,启用nscd服务.nscd服务缓存用户,组和其他类型的信息.如果选择在网络上用NIS,LDAP或hesiod分发用户和组的信息,缓存就尤其有用.bootloader(必需)指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.--append=,指定内核参数.要指定多个参数,使用空格分隔它们.例如:bootloader --location=mbr --append="hdd=ide-scsi ide=nodma"--driveorder,指定在BIOS引导顺序中居首的驱动器.例如:bootloader --driveorder=sda,hda--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序).--password=,如果使用GRUB,把GRUB引导装载程序的密码设置到这个选项指定的位置.这应该被用来限制对可以传入任意内核参数的GRUB shell的访问.--md5pass=,如果使用GRUB,这和--password=类似,只是密码已经被加密.--upgrade,升级现存的引导装载程序配置,保留其中原有的项目.该选项仅可用于升级.clearpart(可选)在创建新分区之前,从系统上删除分区.默认不会删除任何分区.注:如果使用了clearpart命令,--onpart命令就不能够用在逻辑分区上.--all,删除系统上所有分区.--drives=,指定从哪个驱动器上清除分区.例如,下面的命令清除了主IDE控制器上的前两个驱动器上所有分区clearpart --drives=hda,hdb --all--initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签.--linux,删除所有Linux分区.--none(缺省),不要删除任何分区.cmdline(可选)在完全的非交互式的命令行模式下进行安装.任何交互式的提示都会终止安装.这个模式对于有x3270控制台的IBM System z系统很有用.device(可选)在多数的PCI系统里,安装程序会正确地自动探测以太网卡和SCSI卡.然而,在老的系统和某些PCI系统里,kickstart需要提示来找到正确的设备.device命令用来告诉安装程序安装额外的模块,它有着这样的格式:device <type><moduleName> --opts=<options><type>,用scsi或eth代替<moduleName>,使用应该被安装的内核模块的名称来替换.--opts=,传递给内核模块的选项.注意,如果把选项放在引号里,可以传递多个选项.例如:--opts="aic152x=0x340 io=11"driverdisk(可选)可以在kickstart安装过程中使用驱动软盘.必须把驱动软盘的内容复制到系统的硬盘分区的根目录下.然后必须使用driverdisk 命令来告诉安装程序到哪去寻找驱动磁盘.driverdisk <partition> [--type=<fstype>]另外,也可以为驱动程序盘指定一个网络位置:driverdisk --source=ftp://path/to/dd.imgdriverdisk --source=http://path/to/dd.imgdriverdisk --source=nfs:host:/path/to/img<partition>,包含驱动程序盘的分区.--type=,文件系统类型(如:vfat,ext2,ext3).firewall(可选)这个选项对应安装程序里的「防火墙配置」屏幕:firewall --enabled|--disabled [--trust=] <device> [--port=]--enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙.--disabled或--disable,不要配置任何iptables规则.--trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1.<incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙.--ssh--telnet--smtp--http--ftp--port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口.例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开.firstboot(可选)决定是否在系统第一次引导时启动"设置代理".如果启用,firstboot软件包必须被安装.如果不指定,这个选项是缺省为禁用的.--enable或--enabled,系统第一次引导时,启动"设置代理".--disable或--disabled,系统第一次引导时,不启动"设置代理".--reconfig,在系统引导时在重配置(reconfiguration)模式下启用"设置代理".这个模式启用了语言,鼠标,键盘,根密码,安全级别,时区和缺省网络配置之外的选项.halt(可选)在成功地完成安装后关闭系统.这和手工安装相似,手工安装的anaconda会显示一条信息并等待用户按任意键来重启系统.在kickstart安装过程中,如果没有指定完成方法(completion method),将缺省使用reboot选项.halt选项基本和shutdown -h命令相同.关于其他的完成方法,请参考kickstart的poweroff,reboot和shutdown选项.graphical(可选)在图形模式下执行kickstart安装.kickstart安装默认在图形模式下安装.install(可选)告诉系统来安装全新的系统而不是在现有系统上升级.这是缺省的模式.必须指定安装的类型,如cdrom,harddrive,nfs或url(FTP 或HTTP安装).install命令和安装方法命令必须处于不同的行上.cdrom从系统上的第一个光盘驱动器中安装.harddrive从本地驱动器的vfat或ext2格式的红帽安装树来安装.--biospart=,从BIOS分区来安装(如82).--partition=,从分区安装(如sdb2).--dir=,包含安装树的variant目录的目录.例如:harddrive --partition=hdb2 --dir=/tmp/install-treenfs从指定的NFS服务器安装.--server=,要从中安装的服务器(主机名或IP).--dir=,包含安装树的variant目录的目录.--opts=,用于挂载NFS输出的Mount选项(可选).例如:nfs --server= --dir=/tmp/install-treeurl通过FTP或HTTP从远程服务器上的安装树中安装.例如:url --url http://<server>/<dir>或:url --url ftp://<username>:<password>@<server>/<dir>ignore disk(可选)用来指定在分区,格式化和清除时anaconda不应该访问的磁盘.这个命令有一个必需的参数,就是用逗号隔开的需要忽略的驱动器列表.例如:ignoredisk --drives=[disk1,disk2,...]interactive(可选)在安装过程中使用kickstart文件里提供的信息,但允许检查和修改给定的值.将遇到安装程序的每个屏幕以及kickstart文件里给出的值.通过点击"下一步"接受给定的值或是改变值后点击"下一步"继续.请参考autostep命令.iscsi(可选)issci --ipaddr= [options].--target--port=--user=--password=iscsiname(可选)key(可选)指定安装密钥,它在软件包选择和获取支持时设别系统的时候是必需的.这个命令是红帽企业Linux-specific,它对Fedora来说没有意义并且会被忽略.--skip,跳过输入密钥.通常,如果没有key命令,anaconda将暂停并提示输入密钥.如果没有密钥或不想提供它,这个选项允许继续自动化安装.keyboard(必需)设置系统键盘类型.这里是i386,Itanium,和Alpha 机器上可用键盘的列表:be-latin1, bg, br-abnt2, cf, cz-lat2, cz-us-qwertz, de, de-latin1,de-latin1-nodeadkeys, dk, dk-latin1, dvorak, es, et, fi, fi-latin1,fr, fr-latin0, fr-latin1, fr-pc, fr_CH, fr_CH-latin1, gr, hu, hu101,is-latin1, it, it-ibm, it2, jp106, la-latin1, mk-utf, no, no-latin1,pl, pt-latin1, ro_win, ru, ru-cp1251, ru-ms, ru1, ru2, ru_win,se-latin1, sg, sg-latin1, sk-qwerty, slovene, speakup, speakup-lt,sv-latin1, sg, sg-latin1, sk-querty, slovene, trq, ua, uk, us, us-acentos文件/usr/lib/python2.2/site-packages/rhpl/keyboard_models.py 也包含这个列表而且是rhpl 软件包的一部分.lang(必需)设置在安装过程中使用的语言以及系统的缺省语言.例如,要把语言设置为英语,kickstart文件应该包含下面的一行:lang en_US文件/usr/share/system-config-language/locale-list里每一行的第一个字段提供了一个有效语言代码的列表,它是system-config-language软件包的一部分.文本模式的安装过程不支持某些语言(主要是中文,日语,韩文和印度的语言).如果用lang命令指定这些语言中的一种,安装过程仍然会使用英语,但是系统会缺省使用指定的语言.langsupport(不赞成)langsupport关键字已经被取消而且使用它将导致屏幕出现错误信息及终止安装.作为代替,应该在kickstart文件里的%packages 部分列出所支持的语言的支持软件包组.例如,要支持法语,应该把下面的语句加入到%packages:@french-supportlogvol(可选)使用以下语法来为逻辑卷管理(LVM)创建逻辑卷:logvol <mntpoint> --vgname=<name> --size=<size> --name=<name><options>这些选项如下所示:--noformat,使用一个现存的逻辑卷,不进行格式化.--useexisting,使用一个现存的逻辑卷,重新格式化它.--fstype=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.--fsoptions=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.--bytes-per-inode=,指定在逻辑卷上创建的文件系统的节点的大小.因为并不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.--grow=,告诉逻辑卷使用所有可用空间(若有),或使用设置的最大值.--maxsize=,当逻辑卷被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.--recommended=,自动决定逻辑卷的大小.--percent=,用卷组里可用空间的百分比来指定逻辑卷的大小.首先创建分区,然后创建逻辑卷组,再创建逻辑卷.例如:part pv.01 --size 3000volgroup myvg pv.01logvol / --vgname=myvg --size=2000 --name=rootvollogging(可选)这个命令控制安装过程中anaconda的错误日志.它对安装好的系统没有影响.--host=,发送日志信息到给定的远程主机,这个主机必须运行配置为可接受远程日志的syslogd进程.--port=,如果远程的syslogd进程没有使用缺省端口,这个选项必须被指定.--level=,debug,info,warning,error或critical中的一个.指定tty3上显示的信息的最小级别.然而,无论这个级别怎么设置,所有的信息仍将发送到日志文件.mediacheck(可选)如果指定的话,anaconda将在安装介质上运行mediacheck.这个命令只适用于交互式的安装,所以缺省是禁用的.monitor(可选)如果monitor命令没有指定,anaconda将使用X来自动检测的显示器设置.请在手工配置显示器之前尝试这个命令.--hsync=,指定显示器的水平频率.--vsync=,指定显示器的垂直频率.--monitor=,使用指定的显示器;显示器的名字应该在hwdata软件包里的/usr/share/hwdata/MonitorsDB列表上.这个显示器的列表也可以在Kickstart Configurator的X 配置屏幕上找到.如果提供了--hsync或--vsync,它将被忽略.如果没有提供显示器信息,安装程序将自动探测显示器.--noprobe=,不要试图探测显示器.mouse(已取消)mouse 关键字已经被取消,使用它将导致屏幕出现错误信息并终止安装.network(可选)为系统配置网络信息.如果kickstart安装不要求联网(换句话说,不从NFS,HTTP或FTP安装),就不需要为系统配置网络.如果安装要求联网而kickstart文件里没有提供网络信息,安装程序会假定从eth0通过动态IP地址(BOOTP/DHCP)来安装,并配置安装完的系统动态决定IP地址.network选项为通过网络的kickstart安装以及所安装的系统配置联网信息.--bootproto=,dhcp,bootp或static中的一种,缺省值是dhcp.bootp和dhcp被认为是相同的.static方法要求在kickstart文件里输入所有的网络信息.顾名思义,这些信息是静态的且在安装过程中和安装后所有.静态网络的设置行更为复杂,因为必须包括所有的网络配置信息.必须指定IP地址,网络,网关和命名服务器.例如("\"表示连续的行):network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 \--gateway=10.0.2.254 --nameserver=10.0.2.1如果使用静态方法,请注意以下两个限制:所有静态联网配置信息都必须在一行上指定,不能使用反斜线来换行.在这里只能够指定一个命名服务器.然而,如果需要的话,可以使用kickstart文件的%post段落来添加更多的命名服务器.--device=,用来选择用于安装的特定的以太设备.注意,除非kickstart文件是一个本地文件(如ks=floppy),否则--device=的使用是无效的.这是因为安装程序会配置网络来寻找kickstart文件.例如: network --bootproto=dhcp --device=eth0--ip=,要安装的机器的IP地址.--gateway=,IP地址格式的默认网关.--nameserver=,主名称服务器,IP地址格式.--nodns,不要配置任何DNS 服务器.--netmask=,安装的系统的子网掩码.--hostname=,安装的系统的主机名.--ethtool=,指定传给ethtool程序的网络设备的其他底层设置.--essid=,无线网络的网络ID.--wepkey=,无线网络的加密密钥.--onboot=,是否在引导时启用该设备.--class=,DHCP类型.--mtu=,该设备的MTU.--noipv4=,禁用此设备的IPv4.--noipv6=,禁用此设备的IPv6.multipath(可选)multipath --name= --device= --rule=part或partition(对于安装是必需的,升级可忽略).在系统上创建分区.如果不同分区里有多个红帽企业Linux系统,安装程序会提示用户升级哪个系统.警告:作为安装过程的一部分,所有被创建的分区都会被格式化,除非使用了--noformat和--onpart.<mntpoint>,<mntpoint>是分区的挂载点,它必须是下列形式中的一种:/<path>,例如,/,/usr,/homeswap,该分区被用作交换空间,要自动决定交换分区的大小,使用--recommended选项.swap --recommended自动生成的交换分区的最小值大于系统内存的数量,但小于系统内存的两倍.raid.<id>,该分区用于software RAID(参考raid).pv.<id>,该分区用于LVM(参考logvol).--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB.--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值.--maxsize=,当分区被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.--noformat,用--onpart命令来告诉安装程序不要格式化分区.--onpart=或--usepart=,把分区放在已存在的设备上.例如:partition /home --onpart=hda1,把/home置于必须已经存在的/dev/hda1上.--ondisk=或--ondrive=,强迫分区在指定磁盘上创建.例如:--ondisk=sdb把分区置于系统的第二个SCSI磁盘上.--asprimary,强迫把分区分配为主分区,否则提示分区失败.--type=(用fstype代替),这个选项不再可用了.应该使用fstype.--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat.--start=,指定分区的起始柱面,它要求用--ondisk=或ondrive=指定驱动器.它也要求用--end=指定结束柱面或用--size=指定分区大小.--end=,指定分区的结束柱面.它要求用--start=指定起始柱面.--bytes-per-inode=,指定此分区上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.--recommended,自动决定分区的大小.--onbiosdisk,强迫在BIOS 找到的特定磁盘上创建分区.注:如果因为某种原因分区失败了,虚拟终端3上会显示诊断信息.poweroff(可选)在安装成功后关闭系统并断电.通常,在手工安装过程中,anaconda会显示一条信息并等待用户按任意键来重新启动系统.在kickstart的安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.raid(可选)组成软件RAID设备.该命令的格式是:raid <mntpoint> --level=<level> --device=<mddevice><partitions*><mntpoint>,RAID文件系统被挂载的位置.如果是/,除非已经有引导分区存在(/boot),RAID级别必须是1.如果已经有引导分区,/boot分区必须是级别1且根分区(/)可以是任何可用的类型.<partitions*>(这表示可以有多个分区)列出了加入到RAID阵列的RAID 标识符.--level=,要使用的RAID级别(0,1,或5).--device=,要使用的RAID设备的名称(如md0或md1).RAID设备的范围从md0直到md7,每个设备只能被使用一次.--bytes-per-inode=,指定RAID设备上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以对于那些文件系统它都会被忽略.--spares=,指定RAID阵列应该被指派N个备用驱动器.备用驱动器可以被用来在驱动器失败时重建阵列.--fstype=,为RAID阵列设置文件系统类型.合法值有:ext2,ext3,swap和vfat.--fsoptions=,指定当挂载文件系统时使用的free form字符串.这个字符串将被复制到系统的/etc/fstab文件里且应该用引号括起来.--noformat,使用现存的RAID设备,不要格式化RAID阵列.--useexisting,使用现存的RAID设备,重新格式化它.reboot(可选)在成功完成安装(没有参数)后重新启动.通常,kickstart会显示信息并等待用户按任意键来重新启动系统.repo(可选)配置用于软件包安装来源的额外的yum库.可以指定多个repo行.repo --name=<repoid> [--baseline=<url>| --mirrorlist=<url>]--name=,repo id.这个选项是必需的.--baseurl=,库的URL.这里不支持yum repo配置文件里使用的变量.可以使用它或者--mirrorlist,亦或两者都不使用.--mirrorlist=,指向库镜像的列表的URL.这里不支持yum repo配置文件里可能使用的变量.可以使用它或者--baseurl,亦或两者都不使用.rootpw(必需)把系统的根口令设置为<password>参数.rootpw [--iscrypted] <password>--iscrypted,如果该选项存在,口令就会假定已被加密.selinux(可选)在系统里设置SELinux状态.在anaconda里,SELinux缺省为enforcing.selinux [--disabled|--enforcing|--permissive]--enforcing,启用SELinux,实施缺省的targeted policy.注:如果kickstart文件里没有selinux选项,SELinux将被启用并缺省设置为--enforcing.--permissive,输出基于SELinux策略的警告,但实际上不执行这个策略.--disabled,在系统里完全地禁用SELinux.services(可选)修改运行在缺省运行级别下的缺省的服务集.在disabled列表里列出的服务将在enabled列表里的服务启用之前被禁用.--disabled,禁用用逗号隔开的列表里的服务.--enabled,启用用逗号隔开的列表里的服务.shutdown(可选)在成功完成安装后关闭系统.在kickstart安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.skipx(可选)如果存在,安装的系统上就不会配置X.text(可选)在文本模式下执行kickstart安装. kickstart安装默认在图形模式下安装.timezone(可选)把系统时区设置为<timezone>,它可以是timeconfig列出的任何时区.timezone [--utc] <timezone>--utc,如果存在,系统就会假定硬件时钟被设置为UTC(格林威治标准)时间.upgrade(可选)告诉系统升级现有的系统而不是安装一个全新的系统.必须指定cdrom,harddrive,nfs或url(对于FTP和HTTP而言)中的一个作为安装树的位置.详情请参考install.user(可选)在系统上创建新用户.user --name=<username> [--groups=<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>]--name=,提供用户的名字.这个选项是必需的.--groups=,除了缺省的组以外,用户应该属于的用逗号隔开的组的列表.--homedir=,用户的主目录.如果没有指定,缺省为/home/<username>.--password=,新用户的密码.如果没有指定,这个帐号将缺省被锁住.--iscrypted=,所提供的密码是否已经加密?--shell=,用户的登录shell.如果不提供,缺省为系统的缺省设置.--uid=,用户的UID.如果未提供,缺省为下一个可用的非系统UID.vnc(可选)允许通过VNC远程地查看图形化的安装.文本模式的安装通常更喜欢使用这个方法,因为在文本模式下有某些大小和语言的限制.如果为no,这个命令将启动不需要密码的VNC服务器并打印出需要用来连接远程机器的命令.vnc [--host=<hostname>] [--port=<port>] [--password=<password>]。
Linux的进程优先级NI和PR为什么要有进程优先级?这似乎不⽤过多的解释,毕竟⾃从多任务操作系统诞⽣以来,进程执⾏占⽤cpu的能⼒就是⼀个必须要可以⼈为控制的事情。
因为有的进程相对重要,⽽有的进程则没那么重要。
进程优先级起作⽤的⽅式从发明以来基本没有什么变化,⽆论是只有⼀个cpu的时代,还是多核cpu时代,都是通过控制进程占⽤cpu时间的长短来实现的。
就是说在同⼀个调度周期中,优先级⾼的进程占⽤的时间长些,⽽优先级低的进程占⽤的短些。
请⼤家真的不要混淆了系统中的这两个概念:nice(NI)和priority(PR),他们有着千丝万缕的关系,但对于当前的Linux系统来说,它们并不是同⼀个概念。
我们看这个命令:⼤家是否真的明⽩其中PRI列和NI列的具体含义有什么区别?同样的,如果是top命令:⼤家是否搞清楚了这其中PR值和NI值的差别?如果没有,那么我们可以⾸先搞清楚什么是nice值。
什么是NICE值?NICE值应该是熟悉Linux/UNIX的⼈很了解的概念了,它是反应⼀个进程“优先级”状态的值,其取值范围是-20⾄19,⼀共40个级别。
这个值越⼩,表⽰进程”优先级”越⾼,⽽值越⼤“优先级”越低。
例如,我们可以通过NICE命令来对⼀个将要执⾏的bash命令进⾏NICE值设置,⽅法是:1. [root@zorrozou-pc0 zorro]# nice -n 10 bash这样我就⼜打开了⼀个bash,并且其nice值设置为10,⽽默认情况下,进程的优先级应该是从⽗进程继承来的,这个值⼀般是0。
我们可以通过nice命令直接查看到当前shell的nice值:1. [root@zorrozou-pc0 zorro]# nice2. 10对⽐⼀下正常情况:1. [root@zorrozou-pc0 zorro]# exit退出当前nice值为10的bash,打开⼀个正常的bash,我们查看下其 Nice值:1. [root@zorrozou-pc0 zorro]# bash2. [root@zorrozou-pc0 zorro]# nice3. 0另外,使⽤renice命令可以对⼀个正在运⾏的进程进⾏nice值的调整,我们也可以使⽤⽐如top、ps等命令查看进程的nice值,具体⽅法我就不多说了,⼤家可以参阅相关man page。
Eclipse打包Java应用程序及在Linux系统上的部署运行1、Eclipse打包Java应用程序项目上,单击右键,弹出菜单,选择Export”第一步:在java“第二步:选择导出为JAR file”“第三步:选择jar文件的安放目录和名称第四步:选择运行的main函数注:用winRAR压缩文件管理器打开jar文件,其中文件夹META-INF中的文件MANIFEST.MF,打开此文件,内容如下:Manifest-Version: 1.0Main-Class: com.channelsoft.sms.test.Test可以手动修改Main-Class项,从而改变程序运行的入口函数。
2、SMSAPI.jar文件在CentOS 上的部署运行1)在CentOS上建立新的目录:/dibin.把jar文件SMSAPI.jar拷贝到此文件夹下。
2)打开终端命令,输入:cd /dibin(进入dibin目录)java -jar SMSAPI.jar(运行SMSAPI)3)如2)所示,每次运行都得输入两行命令,其它情况可能更多,为此我把命令行,封装成shell程序,直接运行shell就可以运行SMSAPI。
具体如下:shell程序sms,内容:#!/bin/bash (执行此shell的程序)cd /dibinjava -jar SMSAPI.jar具体终端命令:chmod +x sms (转化成可执行文件)cd /dibin./sms或者cd /dibinnohup ./sms (后台运行)4)把shell程序sms在终端命令中设置如下:export PATH="$PATH:/dibin",则在终端命令中:sms或nohup sms就可运行。
但是这样还存在一个问题,每次开启一个新的终端,需要重复输入export PATH="$PATH:/dibin",否则直接运行sms或nohup sms,应用程序不执行。
Linux操作系统实验指导书Linux操作系统实验指导书计算机科学与技术学院技术科学与技术系实验⼀Linux系统安装与简单配置⼀、实验⽬的1.掌握虚拟机的配置过程。
2.掌握Linux系统的安装过程和简单配置⽅法。
3.掌握Linux系统的启动、关闭步骤。
⼆、实验内容1.安装并使⽤虚拟机(如Sun Virtualbox ver 3.06)。
2.在虚拟机上安装Linux系统(如红旗Linux桌⾯版4.0)。
3.配置Linux系统运⾏环境。
4.正确地启动、关闭系统。
三、主要实验步骤1.安装虚拟机软件(例如Sun Virtualbox ver 3.06),下图为安装好Virtualbox且运⾏成功的界⾯。
2.在Virtualbox虚拟机中新建虚拟电脑1)点击“新建”图标,就会弹出“欢迎使⽤新建虚拟电脑向导”,点击“下⼀步”图标,在下图中的对话框中填写虚拟电脑的名称,例如“myredf”,并选择操作系统类型,点击“下⼀步”图标2)接着设置内存⼤⼩,例如下图所⽰,点击“下⼀步”图标3)接着设置虚拟硬盘⼤⼩,点击“下⼀步”图标拟硬盘类型”,如下图所⽰,且点击“下⼀步”图标5)在“虚拟硬盘所在位置和空间⼤⼩”对话框中,点击“下⼀步”图标,然后出现“摘要”对话框,点击“完成”图标,6)再次点击“完成”图标,出现下图所⽰的虚拟机界⾯:7)接着为虚拟机myredf配置虚拟光驱,点击设置图标,出现下⾯的界⾯:8)在光驱栏⽬中,选择分配光驱,再选择虚拟光盘,接着点击右边的⽂件夹图标,在弹出的虚拟介质管理器对话框中,注册红旗Linux的安装光盘映象⽂件(例如redflag.iso),然后点击确定,就会出现如下的界⾯:9)在虚拟机主界⾯中,点击“开始”图标,启动虚拟机myredf的运⾏,就会出现如下的界⾯:10)接着,就按照课本中的关于红旗Linux的安装步骤,⼀步⼀步地进⾏配置和安装Linux。
3.安装成功Linux之后,再按照课本中的步骤进⾏登录和退出系统以及进⾏⼀些简单的配置⼯作。
如何执行在Linux上运行的应用程序关键字:Linux先决条件要充分理解本文,必须具备Windows 环境下桌面应用程序的工作经验,我认为读者对如何使用Linux 桌面有一个基本的了解。
使用一个运行的Linux 计算来机探讨本文的概念和示例是很有帮助的。
概述有时候第一次在Linux 上运行一个应用程序需要一点额外工作。
有些应用程序,比如服务器服务,可能无法安装为服务,因此您需要从命令行启动这些应用程序。
对于启动这些应用程序的用户帐户而言,需要在应用程序文件中设置执行许可标志(x)。
运行用户空间应用程序Linux 在内核空间或用户空间运行进程。
用户空间是操作系统的区域,应用程序通常在此运行。
简单地说,每个用户帐户有其自己的用户空间,应用程序在这个领域内运行。
默认情况下,只有root 用户有权访问内核空间。
root 用户是Linux 中的超级用户,相当于Windows 中的管理员帐户。
在root 用户帐户下运行应用程序可能会引起安全风险,是不可取的。
很多服务器服务需要root 权限启动服务。
然而,服务启动后,root 帐户通常会将其移至服务帐户。
严格地说,Linux 中的服务帐户才是标准的用户帐户。
主要区别是服务帐户仅用于运行一个服务,而不是为任何实际登录的用户准备的。
设置权限您可以使用chmod 命令在一个文件中设置执行权限。
在Linux 中,umask 设置通常用来防止下载的文件被执行,也有充分的理由相信,因为它有助于维护Linux 计算机的安全性。
大多数Linux 发行版具有一个值为022 的umask 设置,这意味着,默认情况下一个新文件权限设置为644.权限的数字表示形式采用读(4)、写(2)、执行(1) 的格式。
因此,默认权限为644 的应用程序下载意味着文件所有者有读写权限,而组用户和其他用户只有读权限。
例如,为每个人赋予一个文件的执行权限,使用chmod a+x 命令。
a 表示所有人,加号(+) 表示添加,而x 表示执行。
同样地,如果应用程序是一个服务器服务,您应该确保只有授权帐户才有权执行此服务。
如果一个应用程序能够在标准用户帐户权限下运行,但只有特定组中的用户才需要使用它,您可以将该组所有者权限设置为可执行,然后将这些用户添加到该组中。
更具体地说,您可以在一个可执行文件中设置访问控制列表(ACL) 权限,赋予特定用户或组权限来运行该应用程序。
使用setfacl 实用工具设置ACL 权限。
对于这些需要以root 用户启动进程的应用程序,比如服务器服务,您有几个选择。
总结了允许用户执行需要root 权限的服务器服务的各种选项。
选项描述作为root 用户不推荐用于服务器服务。
当用户已经知道root 密码而且应用程序泄露不是首要关注问题时,可用于应用程序。
SetUID 由于安全问题,不推荐使用。
SetUID 允许标准用户以另一个用户方式,比如root 用户,执行一个文件。
sudo 很常用,并且被认为是一个很好的实践。
sudo 授予一个用户或组成员权限以执行可能额外需要root 权限的文件。
该用户不需要知道root 密码。
带有文件权限的标准用户帐户在一个文件上为用户所有者、组所有者或其他人(所有人)设置执行权限。
这是授予那些不需要root 权限来执行应用程序的用户的常用方法。
带有ACL 权限的标准用户帐户使用较少,但是如果您不想授予一个用户sudo 访问或者更改文件的权限,这也是一个可行的解决方案。
在一个文件上使用setfacl 命令,您可以授予一个特定用户或用户组执行该文件的权力。
从命令行运行在管理Linux 服务器时,从命令行运行应用程序是一项基本的任务。
很多应用程序使用shell 脚本(类似于Windows 批处理文件.bat)来启动应用程序并执行其他任务,比如设置变量以及为其他用户分配进程。
例如,应用程序可能需要一个Java?Virtual Machine (JVM) 来执行。
那样的话,shell 脚本可以设置适当的环境变量,然后执行Java 命令来运行Java Archive (JAR) 或类文件。
这同样适用于使用Perl、Python、甚至C# 的应用程序。
(当然,C# 编译的应用程序可以在Linux 上运行)从命令行或者shell 提示符执行应用程序的一个常用方法是使用./ 命令。
如果您在Linux 中使用句号(。
) 和正斜杠(/),就意味着告诉环境您想要以可执行文件运行该文件。
例如,运行一个名为myapp 的可执行文件,您可以使用./myapp 命令。
同样地,您可以在文件名之前加上语言环境,比如:shphppythonperljava但更多情况下,套装应用程序使用shell 脚本,以#! 符号设置环境变量提供该语言的运行时可执行路径,比如#!/usr/bin/python.您也应该熟悉这种方法。
清单 1 使用catalina.sh 默认脚本通过./ 方法启动Apache Tomcat 应用程序服务器。
然后,使用sh 方法启动服务器。
因为默认端口是8080,标准用户不需要对其进行特别修改就可以启动该服务。
清单 1. 从命令行执行应用程序考虑启动一个典型Hypertext Transfer Protocol (HTTP) Web 服务器。
在Linux 中,任何低于1024 的端口被认为是一个权限端口,只有root 可以打开权限端口。
因为,默认情况下,Web 服务器运行于端口80,root 需要启动该进程。
然而,如上所述,以root 用户运行一个服务被认为是不安全的。
正确的步骤是以root 启动该服务,然后将其转移到一个标准用户或者服务帐户。
幸运的是,许多服务器服务由脚本来执行这一操作。
如果您从头开始构建Apache Web 服务器,您将会发现它以root 用户启动,然后将httpd 线程转交给apache 用户。
清单 2 启动一个默认的Apache 2 Web 服务器编译。
安装流程也做了一些事情,包括使apachectl 命令可执行。
因为该流程需要使用端口80,使用root 用户权限启动。
然而,ps 命令显示httpd 流程在apache 用户帐户下运行。
清单 2. 启动Apache Web 服务器在后台运行应用程序一些安装的软件可能不像Apache Web 服务器那样用户友好。
您很可能需要在流程启动后以后台方式运行它,除非您正在进行故障排除,或者想要看看应用程序到底怎么了。
如果您没有这么做,shell 关闭后应用程序将终止。
运行服务器服务时,可不希望每次关闭终端shell 或者退出时服务都会停止!如果在后台运行一个应用程序,即使关闭了shell 窗口,应用程序也会继续运行。
您可以通过在执行命令结尾附加一个(&) 符号来启动应用程序。
例如,您可以使用vi 编辑器打开文件,然后使用vi /etc/sysconfig/network & 命令在后台运行该文件,因为& 可以打开/etc/sysconfig/network 文件并将其保留在后台。
即使在退出后,您也可以使用nohup 实用工具支持进程继续运行。
例如,nohup vi /etc/sysconfig/network &.清单 3 在Vim 编辑器中打开一个用来编辑的文件,然后将其放在后台。
清单 3. 在后台运行应用程序您可以输入jobs 命令来查看您在后台上运行的所有应用程序。
为在后台上运行的每个任务分配了一个序列号,从1 开始。
清单 3 中的任务序列号是1.24940 是进程ID (PID)。
您可以使用fg 命令和特定的任务号将应用程序移到前台。
在本例中,进程没有被用户所使用,因此显示为Stopped.但是,命令fg 1 打开终端并回到编辑文件的活动进程。
从桌面运行应用程序在Linux 中从桌面运行图形用户界面(GUI) 应用程序与在Windows 中没多大区别。
通常,您需要了解特定的桌面环境下应用程序在菜单中是如何分组的。
Linux 有足够的桌面应用程序,可用于各种任务。
有一些应用程序是Linux 本机固有的,还有另外一些应用程序可能是在一个常用运行时环境中使用C# 开发的跨平台应用程序,比如,。
NET Framework 应用程序。
您会发现,使用一个Wine 这样的虚拟环境,您甚至可以在Linux 上运行您最喜爱的Windows 应用程序。
Linux 本机应用程序您很有可能会为您最喜爱的基于Windows 的应用程序找到一个替代的Linux 应用程序。
在桌面上运行Linux 本机应用程序比较直观。
与Windows 一样,您通常可以在菜单中找到这些已组织的应用程序,当您想要一个Windows 应用程序时,只需单击并运行即可。
对于那些需要root 权限的应用程序,将会提示您输入root 密码,然后才开始运行。
这在概念上类似于Windows 中的Run as Administrator 选项。
否则,您运行的所有程序都会位于您所登录帐户的用户空间中。
在Windows 中,您可以创建桌面快捷键。
Linux 也有类似的快捷键launcher,您可以将它放在面板或桌面上。
单击launcher 时,快捷键将执行程序。
图 1 显示GNOME Desktop 上Mozilla Firefox Web 浏览器的两个launcher.一个launcher 位于面板上,另一个位于桌面上。
图1. 查看桌面或面板上的launcherMono许多Windows 应用程序都是使用.NET Framework 开发的。
Mono 是.NET 的一个开源实现,可在很多平台上运行(包括linux)。
事实上,Mono 网站称其为C# 和Common Language Runtime (CLR) 的一个实现,与.Net 是二进制兼容的。
此项目目前由Xamarin 支持。
在Linux 上,您可以执行使用.NET framework(或Mono)开发的应用程序,就像在Windows 上一样。
但是,记住Linux umask 和默认文件权限。
您仍然需要提供文件的执行权限,这样Linux 才会允许执行可执行文件。
在Mono(可以安装在您的Linux GNOME 桌面上)上开发的一些跨平台应用程序,比如F-Spot,同本机GNOME 应用程序一同位于菜单中。
F-Spot 是一个管理照片的开源应用程序。
尽管它是C# 应用程序,但是在GNOME 桌面上表现为一个本机应用程序。
为应用程序创建一个launcher 后,就可以像在Windows 中那样单击并运行。
图 2 演示了基于Mono 的应用程序F-Spot 的位置,以及为其创建桌面或面板launcher 的方法。
图2. 为F-Spot 创建一个launcherWineWine 使您可以在Linux 和其他操作系统上运行Windows 软件。