Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用chmod+;后获取权限被拒绝;在Linux上执行Java程序时使用x_Java_Linux_Permissions_Chmod - Fatal编程技术网

使用chmod+;后获取权限被拒绝;在Linux上执行Java程序时使用x

使用chmod+;后获取权限被拒绝;在Linux上执行Java程序时使用x,java,linux,permissions,chmod,Java,Linux,Permissions,Chmod,这是我的可执行文件: #!/bin/bash JAVA_HOME=/cad2/ece419s/java/jdk1.6.0/ # arguments to GameServer # $1 = port # where GameServer is listening ${JAVA_HOME}bin/java GameServer $1 我以以下方式运行chmod命令: chmod +x server.sh 然后: ./ server.sh 8000 800

这是我的可执行文件:

  #!/bin/bash
  JAVA_HOME=/cad2/ece419s/java/jdk1.6.0/
  # arguments to GameServer
  # $1 = port # where GameServer is listening

  ${JAVA_HOME}bin/java GameServer $1    
我以以下方式运行
chmod
命令:

  chmod +x server.sh
然后:

  ./ server.sh 8000
8000是我的服务器正在侦听的本地计算机的端口


bash-x server.sh 8000
之后,我得到了它看起来在
/
server.sh
之间有一个空格,所以您试图执行
/

您可以运行命令“ls-l”,方法是进入上一个目录并检查权限是否应用于该文件

如果没有,则检查用户是否具有更改权限。否则,您可以使用基本上拥有所有权限的“root”用户


看起来您在其他平台(可能是Windows)上编写了这个
server.sh
脚本,并将其复制到Linux系统,而这两个系统在行尾使用不同的字符,因此请尝试首先通过
dos2unix server.sh
将其转换为Linux格式


如果您的系统没有
dos2unix
,您可以通过

  • 在Fedora
    yum上安装dos2unix

  • 在Debian
    apt上安装dos2unix

  • 两者都需要根权限

    如果您不能或不想安装
    dos2unix
    ,另一个选项是使用
    vim
    (在普通的Linux机器上应该是可变的):

  • vim server.sh
  • :set ff=unix
  • :w

  • 确切的错误消息是什么?Command not found error after./server.sh 8000从这里我可以建议的最好方法是确保(1)chmod实际工作:尝试
    ls-l server.sh
    (2)您与server.sh位于同一目录中,(3)实际存在
    /bin/bash
    ,(4)您可以通过
    bash-xserver.sh8000
    在不使用shebang的情况下运行脚本。在使用bash-xserver.sh8000之后,我遇到了另一个错误JAVA_HOME=$'/cad2/ece419s/JAVA/jdk1.6.0/\r'+$'/cad2/ece419s/JAVA/jdk1.6.0/\rbin/JAVA'GameServer$'8000\r'bin/JAVA:没有这样的文件或目录va/jdk1.6.0/对不起,引号、
    \r
    字符和短语“没有这样的文件或目录va/jdk1.6.0”在我看来都是错的。噢不知道,我只是在没有空间的情况下尝试,但由于某些原因,我在当前目录中找不到命令server.sh?脚本是否运行,或者在尝试运行server.sh时是否得到“command not found”?如果在当前目录中找不到server.sh,那就奇怪了。可能脚本正在运行,但其中有错误?在这种情况下,您可以阅读并尝试,
    bash-x
    。当尝试运行server.sh时,它不会运行i get命令not found error。您的意思是将命令写为bash-x./server.sh8000吗?是的。可能是
    chmod
    不起作用。试试
    ls-l
    。我想我不允许“root”用户,因为我使用的是大学机器。我得到的所有文件都是在Linux上编写的。但在任何情况下,我都尝试了dos2unix server.sh,得到了dos2unix:not命令found@user1722022然后您需要首先安装
    dos2unix
    ,请查看我的更新答案。我没有root权限,因为我使用的是大学实验室工作站机器,不允许我这样做those@user1722022如果已安装
    vim
    ,您可以使用它进行转换。请看我的最新答案。