我真的感觉自己很愚蠢,但是我找不到正确的搜索关键词来从谷歌中获得一些有用的东西。
问题:我们正在开发 symfony1 和 symfony2 应用程序(php)。我们在 Windows 机器上进行开发,而我们的暂存和生产服务器是 Linux。我们有一些任务是通过 Linux 上的 shell 脚本完成的。这些任务包括:- 移动文件和文件夹(例如暂存文件夹中的测试文件)- 设置文件夹权限- 运行各种命令
目前,shell 脚本只能在 Linux 服务器上执行,因为它们无法在 Windows 机器上运行。我们希望能够运行一个脚本,并根据环境执行正确的任务。
为完成这些任务该选择哪种语言?我听说 Python 很好,但不知道它是否真的适合我。我知道一些 Perl,但我认为它不是一个好工具。也许有专门为解决此类问题而设计的语言?
答案1
有许多跨平台语言可用于系统管理任务。Perl、Python 和 Ruby 都是不错的选择。
但这些语言无法自动将仅在 Linux 上有意义的内容转换为最接近的 Windows 等效内容。在 Windows 和 Linux 上设置权限的方式不同。您必须检测操作系统并调用适合该系统的正确适当函数。
为这个任务选择哪种语言?
选择一种你已经熟悉的跨平台语言。如果你对任何一种都不是很熟悉,就选一种看起来很酷的。
由于您正在开发 PHP 应用程序,因此您可以随时在任何地方安装 PHP CLI。由于您已经在使用 PHP,因此您很熟悉它。虽然许多人可能会认为 PHP 很糟糕,但您肯定可以用它完成工作,而且您已经在使用它了。
答案2
好的答案:将台式机/笔记本电脑转移到 Linux。您应该在应用程序所在的同一平台上进行开发。
合力解决的办法是:安装赛格威在您的开发机器上,您将能够运行 shell 脚本。
答案3
您是说问题在于您在 Windows 上开发但在 Linux 上部署,并且您希望在这两个平台上都运行脚本吗?我认为您会发现总会有一些怪癖,除非脚本中有一些等同于 #ifdef 的语句来确定它是在 Windows 还是 Linux 上运行,因为会有目录结构差异等。您不能在 Linux 系统上开发,或者在 Windows 机器上虚拟化 Linux 系统,以便在您正在构建的同一平台上进行开发,这有什么原因吗?
您可以让 Python 在 Windows 上原生运行。如果您使用以 UNIX 为中心的脚本语言来执行操作(如 Bash),您可以在 Windows 下安装 cygwin 以获得运行操作的 POSIX 环境。
就我个人而言,我会虚拟化 Linux 系统,这样可以省去一些移植方面的麻烦和麻烦。如果您需要服务器上在 CRON 下运行的脚本,请安装 Cygwin 并在 Bash 中编写脚本。