linux常用命令运行程序,linux下运行程序
先决条件为了从本文中获得最大收益,您应该有在Windows环境中使用桌面应用程序的经验。我假设读者对如何使用Linux桌面有一个基本的了解。拥有一台可以工作的Linux计算机来探究本文中的概念和示例将会非常有益。
本系列中其他文章的概述请参阅Linux for Windows系统管理员系列中的更多文章。
有时候,第一次在Linux上运行应用程序需要一些额外的工作。有些应用程序(如服务器服务)可能不会作为服务安装,因此您需要从命令行启动它们。对于启动应用程序的用户帐户,在应用程序文件上设置执行权限标志(X)。
运行用户空间应用程序Linux在内核空间或用户空间运行进程。用户是操作系统中通常运行应用程序的区域。简而言之,每个用户帐户都有自己的用户空间,应用程序在这个域中运行。
默认情况下,只有root用户可以访问内核空间。root用户是Linux中的超级用户,相当于Windows中的管理员帐户。以root用户帐户运行应用程序会带来安全风险,因此不建议这样做。
许多服务器服务需要root权限才能启动服务。但是服务启动后,root一般会给服务账号。Linux中的服务帐户在技术上是一个标准用户帐户。主要区别在于,服务帐户仅用于运行服务,而不是供任何人实际使用它们来登录。
设置权限您可以使用chmod命令来设置文件的执行权限。Linux中的Umask设置通常有很好的理由阻止下载的文件被执行,因为它可以帮助维护Linux计算机的安全。
大多数Linux发行版都将umask设置为022,这意味着默认情况下,新文件的权限设置为644。权限的数字表达式是读(4)、写(2)和执行(1)。因此,默认权限为644的应用程序下载意味着文件所有者拥有读写权限,而群主和其他所有者拥有只读权限。
例如,要授予每个人执行文件的权限,可以使用chmod a x命令。a表示全部,加号()表示加号,x表示执行。同样,如果应用程序是服务器服务,您应该确保只有受控帐户可以执行该服务。
如果应用程序可以在标准用户帐户权限下运行,但只有特定组中的用户有权使用该应用程序,您可以将组所有者权限设置为可执行,并将用户添加到组中。
更具体地说,您还可以对可执行文件设置访问控制列表(ACL)权限,以允许特定用户或组有权运行应用程序。使用setfacl实用程序设置acl权限。
对于那些需要以root用户身份启动进程的应用程序,比如服务器服务,您有一些选择。表1总结了允许用户执行需要root权限的服务器服务的各种选项。
表1。运行需要root权限的应用程序的选项。不建议以root用户身份对服务器服务进行选项描述。当用户已经知道root密码并且应用程序的安全性不是主要问题时,应用程序可以接受它。出于安全原因,不建议使用SetUID。SetUID允许标准用户以另一个用户(如root)的身份执行文件。Sudo被广泛使用,并被认为是一种良好的实践。Sudo授予用户或组成员执行文件的权限,否则文件将需要root权限。用户不需要知道root密码。具有文件权限的标准用户帐户为用户所有者、组所有者或其他人(所有者)设置文件执行权限。这是向不需要root权限的用户授予执行应用程序的权限的常用方法。具有ACL权限的标准用户帐户不是一种常见的方法,但当您不想授予用户sudo访问权限或更改文件权限时,这是一种可行的解决方案。对文件使用setfacl命令可以授予特定用户或一组用户执行该文件的权限。从命令行运行标准用户帐户和root特权命令。对于本文中的清单,请注意每个命令都以美元符号($)或英镑符号(#)开头。在Linux Shell中,这些符号是有意义的。shell提示符处的美元符号表示用户拥有标准帐户权限,而英镑符号表示root权限。要执行带有巧妙蜡烛符号的列表中的命令,您需要sudo访问权限或root帐户的直接访问权限来执行命令。
在管理Linux服务器时,从命令行运行应用程序是一项基本任务。许多应用程序都有shell脚本(类似于Windows批处理文件(。bat)),它可以启动应用程序并执行其他任务,例如设置变量和将进程分配给其他用户。例如,一个应用程序可能需要一个Java虚拟机(JVM)来执行。在这种情况下,shell脚本可以设置适当的环境变量,然后执行Java命令来运行Java档案(JAR)或类文件。这适用于使用Perl、Python甚至C #的应用程序。(没错,C #编译的应用可以在Linux上运行!)
如果该命令是Shell内置命令的一部分,或者该命令的目录位置包含在PATH变量中,则可以从命令行或Shell提示符处仅使用文件名来执行该命令。“ls”和“cd”等命令是默认情况下通常包含在PATH中的命令示例,因为它们通常位于/usr/local/lkdy或/usr/lkdy目录中。但是,如果路径中未设置文件位置,则必须包括文件的路径名。例如,如果可执行文件myapp位于/usr/share/scripts目录中,请键入/usr/share/scripts/myapp来执行该脚本。您也可以在文件名前添加一个点(。)和斜杠(/)并键入。/myapp使用相对路径。外壳程序中的点(。)指定当前目录。(Windows包含执行路径上的工作目录,已知一些系统管理员在路径中包含点号(。)来模拟路径,但出于安全原因,不建议这样做。)同样,您可以将区域设置添加到文件名中,例如:
是相对的,因为DOS用户可以引用相对于当前工作目录的路径名。点(。)表示当前目录,两个点(.)表示上一个目录。因此,如果您的工作目录是/home/myuser/docs,并且您想要访问/home/myuser /lkdy中的内容,您可以使用./lkdy。相对路径命名在脚本中非常有用。在脚本中,您已经建立了一个目录结构来容纳脚本和其他文件,但是您不知道最终的安装位置。
PHP Python Perl Java但是,打包的应用程序经常有shell脚本设置环境变量,并使用#!提供运行时可执行文件路径#!符号,比如#!/usr/lkdy/python .你也应该熟悉这种方法。
清单1使用catalina.sh默认脚本通过。/方法。然后,它使用sh方法启动服务器。由于默认端口是8080,因此该服务可以作为标准用户启动,无需特殊修改。
清单1。执行应用程序$。/catalina.sh开始使用CATALINA _ base:/opt/Apache-Tomcat-7 . 0 . 26使用CATALINA _ HOME:/opt/Apache-Tomcat-7 . 0 . 26使用CATALINA _ TMPDIR:/opt/Apache-Tomcat-7 . 0 . 26/temp使用JRE _ HOME:/usrUsing class path:/opt/Apache-Tomcat-7 . 0 . 26/lkdy/bootstrap . jar:/opt/Apache-Tomcat-7 . 0 . 26/lkdy/catalina.sh停.........$ sh catalina.sh开始使用CATALINA _ BASE:/opt/Apache-Tomcat-7 . 0 . 26使用CATALINA _ HOME:/opt/Apache-Tomcat-7 . 0 . 26使用CATALINA _ TMPDIR:/opt/Apache-Tomcat-7 . 0 . 26/temp使用JRE _ HOME:/Usrusing class path:/opt/Apache-Tomcat-7 . 0 . 26/lkdy/bootstrap . jar:/opt/Apache-Tomcat-7 . 0 . 26/lk在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服务器# CD/usr/local/Apache 2/lkdy # Apache CTL start # psaux grep httpd Apache 23094 0.0 0.3 11784 1912?s 10:41 0:00/usr/slkdy/httpd-k startapache 23095 0.0 0.3 11784 1912?s 10:41 0:00/usr/slkdy/httpd-k startapache 23096 0.0 0.3 11784 1912?s 10:41 0:00/usr/slkdy/httpd-k startapache 23097 0.0 0.3 11784 1912?s 10:41 0:00/usr/slkdy/httpd-k startapache 23098 0.0 0.3 11784 1912?S10:41 0:00/usr/slk dy/httpd-kstart在后台运行应用程序有些安装的软件可能没有Apache Web server那么用户友好。除非您正在进行故障排除或想要完全了解应用程序的运行状况,否则您可能希望在进程开始后在后台运行它。如果不这样做,应用程序将在关闭外壳后终止。运行服务器服务时,不希望每次关闭终端外壳或以其他方式注销时服务都停止运行!
如果您在后台运行应用程序,即使您关闭shell窗口,应用程序也将继续运行。可以在执行命令的末尾附加一个符号(后台启动的应用程序)。例如,您可以使用vi编辑器打开该文件,并使用vi /etc/sysconfig/network命令在后台运行它,因为/etc/sysconfig/network文件是在后台打开和保存的。您可以使用nohup实用程序来允许该过程在注销后继续进行。例如nohup vi /etc/sysconfig/network。
清单3打开一个文件,在Vim编辑器中编辑它,并把它放在后台。
清单3。在后台运行应用程序# vi/etc/sysconfig/network[1]24940 # jobs[1]停止了VI/etc/sys config/network您可以键入jobs命令来查看在后台运行的所有应用程序。为每个在后台运行的作业分配一个从1开始的序列号。列表3中的作业是作业号1。2940是进程ID(PID)。您可以使用fg命令和特定的作业号将应用程序置于前台。在本例中,用户没有使用该进程,因此它显示为已停止。然而,命令fg 1将终端返回到编辑文件的活动进程。
从桌面运行应用程序在Linux中从桌面运行图形用户界面(GUI)应用程序与在Windows中运行它们没有太大区别。通常,您需要知道在特定的桌面环境中,应用程序是如何在菜单中分组的。Linux有大量可以用于各种任务的桌面应用程序。有些是Linux自带的,而有些可能是使用公共运行时环境用C #开发的跨平台应用程序,就像。NET框架应用程序。您可能会发现,您甚至可以使用Wine等虚拟环境在Linux上运行您最喜欢的Windows应用程序。
原生Linux应用程序您可能会找到一个Linux应用程序来替代您最喜欢的基于Windows的应用程序。在桌面上运行原生Linux应用程序非常简单。与Windows类似,这些应用通常可以在菜单中找到,你只需点击即可运行Windows应用。
对于那些需要root权限的应用程序,系统会提示您输入root密码,然后再继续。这在概念上类似于Windows中的
“以管理员
identity运行”
选项。否则,您运行的所有应用程序都位于您的登录帐户的用户空间中。在Windows中,您可以创建桌面快捷方式。Linux有一个类似的快捷方式叫做launcher,你可以把它放在面板或者桌面上。当你点击启动器时,它将执行程序。
图1显示了GNOME桌面上Mozilla Firefox Web浏览器的两个启动器。一个启动器位于面板上,另一个位于桌面上。
图一。在桌面和面板上查看启动器单核细胞增多症许多Windows应用程序都是使用。NET框架。Mono是。NET,它可以运行在包括Linux在内的许多平台上。事实上,Mono网站将其描述为C #和的实现。NET二进制兼容公共语言运行库(CLR)。Xamarin目前支持这个项目。
在Linux上,和在Windows上一样,应用程序是用。NET框架(或Mono)执行。但是,请记住Linux umask和默认文件权限。您仍然需要提供对该文件的执行权限,以便Linux可以允许可执行文件执行。
一些用Mono开发的可以安装在Linux GNOME桌面上的跨平台应用程序(比如F-Spot)位于本机GNOME应用程序的菜单上。F-Spot是一个用于管理照片的开源应用程序。即使它是一个C #应用程序,它在GNOME桌面上也是一个本地应用程序。为应用程序创建启动器后,您可以像在Windows中一样单击并运行它。
图2显示了基于Mono的应用程序F-Spot的位置,以及如何为它创建桌面或面板启动器。
2.为F-Spot创建launcher Wine wine使您能够在Linux和其他操作系统上运行Windows软件。使用Wine,您可以像在Windows中一样安装和运行这些应用程序。Wine仍在积极开发中,并不是所有的Windows程序都可以使用Wine。如果你的应用是为Windows操作系统编译的,发现可以用Wine正常运行,那很可能是桌面应用而不是服务器应用。请务必查看Wine文档,了解在Linux上运行该应用程序的可能性,因为Wine不能完全支持所有应用程序。
在Linux上使用Wine时,在模拟Windows环境的帐户主目录中有一个隐藏的文件夹,如清单4所示。
清单4。隐藏文件夹$ cd/home/tbost/4。Wine/drive _ c/windowsLSC F8 e . tmpcommandexplorer . exefontshelphl . exeinfinstallerls . txtmicrosoft . net notepad . exe pwd . txtregedit . exerundll . exesystemsystem 32 system . init empt Wain _ 32.dlltwain.dllwinhelp.exewinhlp32.exe win . ini winsxs使用Wine安装应用程序后,一般可以在桌面菜单中找到,然后按照Windows中的方式运行。
例如,Camstudio是一个用于录制和管理屏幕视频的开源工具。目前,Linux操作系统还没有发行版。然而,使用Wine,我在Linux桌面上安装了Windows版本。与葡萄酒相关的应用通常分组在“
应用程序”“葡萄酒”“程序”下
”中,如图3所示。图3。使用Wine在Linux上运行Windows应用程序结论本系列的其他文章参见Linux for Windows系统管理员系列中的更多文章。
在管理Linux服务器时,您会遇到从桌面和命令行执行的软件。当您知道如何设置适当的权限和用户帐户时,您可以安全地运行这些应用程序。对于长时间运行的进程(如服务器服务),您可以从命令行执行它们,并在后台进行适当的设置。如果您有适合在桌面上运行的应用程序,那么您也可以这样做——有时甚至是Windows应用程序!
翻译:3359 www.ibm.com/developerworks/open源/库/l-linuxappwindows/index.html