当前位置: 代码网 > 服务器>服务器>Linux > Linux终端执行shell脚本,提示权限不够的问题及解决

Linux终端执行shell脚本,提示权限不够的问题及解决

2024年05月19日 Linux 我要评论
linux终端执行shell脚本,提示权限不够今天在linux尝试搭建dynamips的工作环境在执行shell脚本时遇到个小问题有一个名为start.sh的脚本文件内容如下:#!/bin/bash.

linux终端执行shell脚本,提示权限不够

今天在linux尝试搭建dynamips的工作环境

在执行shell脚本时遇到个小问题

有一个名为start.sh的脚本文件

内容如下:

#!/bin/bash
./dynamips.bin -h 7200 &

在终端执行shell脚本后

出现问题如下:

[root]# ./start.sh
bash: ./start.sh: 权限不够

解决方法

是先使用chmod命令对shell脚本赋予权限

再执行

[root]# chmod 777 ./start.sh
[root]# ./start.sh

让你的shell在后台运行

pc帮助我们搬砖,总不能傻傻的等在terminal等着跑完吧。万一terminal

让进程后台运行

使用&可以让程序后台运行,比如我

for i in {1..10000}; do echo $i; sleep 1; done &

已经后台执行,我用ctrl+c也无法打断,因为进程已经在后台跑了

jobs查看当前终端后台运行

jobs只查询当前终端的运行程序

输出重定向

由于输入没有重定向,所以还是输出到当前的终端。

重定向输出到文件中。

for i in {1..10000}; do echo $i; sleep 1; done > my.log &

这样就不会在控制台输出呗干扰了

让进程不依赖当前shell运行

由于此后台运行的程序依赖当前shell,当我退出的时候,程序也推出了

都是由2666966这个进程带起来的

通过disown命令,把进程用不依赖当前terminal。

disown后,jobs已经是空的

nohub运行, nohup 和 & 的区别

为了避免我每次都到输入disown,如果能让进程启动时,就不跟随系统,可以使用nohub

nohup bash -c 'for i in {1..10000}; do echo $i; sleep 1; done ' > my.log  2>&1 &

这样运行的程序默认就是不依赖当前terminal的。

  • nohub : 应用程序不再和terminal关联,默认不会后台运行
  • &:后台运行

后台运行程序再次接入

在后台运行的程序,有时候想重新接入前台,使用fg(foreground),可以拉起,但必须jobs是以看到进程的。

stopped程序重新唤醒

jobs可以看到的进程,使用bg重新拉起来

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com