当前位置: 首页 > news >正文

ubuntu系统/run目录不能执行脚本问题解决

目录

前言

一、问题现象

二、原因分析

三、解决办法

总结


前言

        在使用 Ubuntu 系统的过程中,我们有时会遇到在 /run 目录下无法执行脚本的情况。这篇博客将详细探讨该问题的原因,并提供有效的解决方案。。


一、问题现象

        当尝试在 /run 目录下执行一个脚本文件时,系统提示权限不足或者找不到可执行文件,即使已经通过chmod +x赋予了脚本执行权限。

root@localhost:/var/run/UpdateShImage# ls -l
total 116
-rwxr-xr-x 1 cftc cftc 108448 Mar 21 07:52 NetTool
-rwxr-xr-x 1 cftc cftc    177 Mar 21 07:54 update.sh
-rwxr-xr-x 1 cftc cftc      6 Mar 21 07:50 version.info
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage# /var/run/UpdateShImage/update.sh
bash: /var/run/UpdateShImage/update.sh: Permission denied
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage# cat update.sh
#!/bin/sh

chmod +x /var/run/UpdateShImage/*

mv /var/run/UpdateShImage/version.info /etc/version.info
mv /var/run/UpdateShImage/NetTool /usr/sbin/NetTool

sync
sleep 1
exit 0

root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage# chmod +x update.sh
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage# ./update.sh
bash: ./update.sh: Permission denied
root@localhost:/var/run/UpdateShImage#
root@localhost:/var/run/UpdateShImage#

二、原因分析

        在 Ubuntu 系统中,/run 目录是一个临时文件系统,通常挂载为 tmpfs。tmpfs 是一种基于内存的文件系统,它的设计初衷是为了提供快速的读写访问,用于存储系统运行时产生的临时文件。出于安全考虑,tmpfs 默认是没有设置可执行权限的。这意味着在 /run 目录下的文件,即使被赋予了执行权限,也无法直接执行。

三、解决办法

        使用sh test.sh的方式来执行脚本,这样可以绕过run分区文件不能被执行的问题,而不需要重新改变分区挂载权限。

sh test.sh

        在 /run 目录下使用sh test.sh这种方式来运行脚本,确实能够在一定程度上 “解决” 脚本无法执行的问题。其原理是,sh命令会启动一个新的 shell 进程,并将脚本文件作为参数传递给它。此时,并不是直接在 /run 目录下执行脚本,而是由系统中已有的、具备执行权限的sh程序来读取并执行脚本内容。这就绕过了 /run 目录本身没有可执行权限的限制。

        然而,这种方法存在一定的局限性。一方面,它没有真正改变 /run 目录的执行权限特性,如果后续还有其他程序或操作依赖于 /run 目录下脚本的直接可执行性,那么这种方式就无法满足需求。另一方面,这种方式可能会导致脚本的运行环境与预期有所差异。例如,脚本中如果依赖于特定的环境变量或相对路径设置,在通过sh命令间接执行时,可能因为新启动的 shell 进程环境不同而出现问题。所以,虽然sh test.sh可以作为一种临时应急手段,但从根本解决 /run 目录脚本执行问题的角度来看,前面提到的修改挂载选项或/etc/fstab文件的方法更为合适。


总结

        通过上述方法,我们可以有效地解决 Ubuntu 系统 /run 目录不能执行脚本的问题。希望这篇文章能帮助到遇到同样问题的朋友们。。

相关文章:

  • 从单任务到多任务:进程与线程如何实现并发?
  • python 标准库之 functools 模块
  • 豪越科技:融合低空经济的消防一体化安全管控解决方案
  • openai agent实践
  • 什么是MCP|工作原理是什么|怎么使用MCP|图解MCP
  • 六十天前端强化训练之第二十七天之Pinia 状态管理全解与购物车实战案例
  • 【Linux】I/O 多路转接:select epoll 技术剖析
  • 安卓 vs iOS 文件系统深度解析:开放自由与封闭安全的终极博弈
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例10,TableView15_10带搜索的导出表格示例
  • [DDD架构]不同数据模型DTO、VO、PO、DAO、DO的含义
  • 自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析
  • Linux:基础IO---文件描述符
  • JavaSE1.0(实战之图书管理系统)
  • FlowMo: 模式搜索+扩散模型提升图像Token化性能
  • 基于Azure Delta Lake和Databricks的安全数据共享(Delta Sharing)
  • C++异常处理完全指南:从原理到实战
  • 操作系统知识点33
  • 31天Python入门——第10天:深入理解值传递·引用传递以及深浅拷贝问题
  • 计算机网络性能优化相关内容详解
  • Bash语言的测试框架
  • 史学巨擘的思想地图与学术路径——王汎森解析梁启超、陈寅恪、傅斯年
  • 许峰已任江苏省南京市副市长
  • 解放日报:这是一场需要定力和实力的“科技长征”
  • 辽宁省委书记郝鹏、省长王新伟赶到辽阳火灾事故现场指导善后处置工作
  • 言短意长|政府食堂、停车场开放的示范效应
  • 打造全域消费场景,上海大世界百个演艺娱乐新物种待孵化