linux下权限不够
chmod +x 脚本命令
./脚本命令 即可。。。
sh startup.sh启动tomcat,出现
This file is needed to run this program
chmod +x *.sh再次执行 sh startup.sh成功启动
linux sh -c 的使用
在Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。
【新建空文件】
方式一 : $ touch test.sh
方式二 : $ echo “” > test.sh
【写内容到文件】
如 test.sh 文件中内容:
$ echo “信息” > test.sh【设置文件所属关系】
下面,如果将 test.sh 权限设置为只有 root 用户才有权限进行写操作:
$ sudo chown root.root test.h
#如果要授权 test 目录中所有文件, 加-R。如:$ sudo chown -R root.root test/#______________________________________________________
【关于重定向 权限不够】
然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.sh 文件中写入信息:
$ sudo echo “第一条内容” >> test.sh
-bash: test.asc: Permission denied
此时,bash 拒绝这么做会提示权限不够,是因为重定向符号 “>” 和 “>>” 也是 bash 的命令。
由于使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 “>>” 命令也具有 root 权限,
所以 bash 会认为这两个命令都没有像 test.sh 文件写入信息的权限。【解决方法】
【方式一:sh -c】
利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
$ sudo sh -c ‘echo “第二条内容” >> test.sh’【方式二:tee】
利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,
具体用法如下:
$ echo “第三条内容” | sudo tee -a test.sh
注:tee 命令的 “-a” 选项的作用等同于 “>>” 命令。
如果去除该选项,那么 tee 命令的作用就等同于 “>” 命令。
今天在部署公司大数据上层服务的时候,发现自己的微服务脚本是白色的,汗,没法执行。原来是没有 .sh 的执行权限,用 chmod 授权下就可以了。
chmod是 Linux 中权限管理命令change the permissions mode of a file的缩写。
一、为所有 .sh 脚本添加执行权限
chmod u+x *.sh,表示对当前目录下的file.sh文件的所有者增加可执行权限。
- u 代表所有者;
- x 代表执行权限;
- + 表示增加权限;
- *.sh 表示当前目录下所有 .sh 文件。
二、为指定 .sh 脚本添加执行权限
chmod u+x file1.sh,表示对当前目录下的 file1.sh 文件的所有者增加可执行权限。
- u 代表所有者;
- x 代表执行权限;
- + 表示增加权限;
- file1 表示指定的脚本文件。
用以上两种方法授权后,在查看执行就可以啦。
三、脚本执行异常
异常信息:/bin/sh^M: bad interpreter: No such file or directory
异常原因:是我们在 windows 下编写的脚本文件,直接放到 Linux 默认的是 dos 模式的文本,不被识别,需要处理下。
解决办法:
1、用 vim 打开脚本文件,在命令模式下输入:set ff=unix, 保存就可以了。
2、在 windows下转换脚本格式,用 Notepad 改变文件格式即可。File-->Conversions-->DOS->UNIX。
3、在 Linux 下新建一个 .sh 文件,然后复制粘贴过去也是可以的。
linux下权限不够
chmod +x 脚本命令
./脚本命令 即可。。。
sh startup.sh启动tomcat,出现
This file is needed to run this program
chmod +x *.sh再次执行 sh startup.sh成功启动
-bash: ./startup.sh: 权限不够
解决办法:用命令chmod 修改bin目录下的.sh权限
执行chmod u+x *.sh即可