命令行语法格式
run-parts [–test] [–verbose] [–report] [–lsbsysinit] [–regex=RE]
[–umask=umask] [–arg=argument] [–exit-on-error] [–help] [–version] [–list]
[–reverse] [–] DIRECTORY
run-parts -V
命令简述
run-parts会运行DIRECTORY目录中所有的可执行文件,但是文件名要符合下面的要求。其他的文件和目录则会被忽略。
如果既没有给出–lsbsysinit选项也没有给出–regex选项,那么这些名称只能由ASCII大小写字母、ASCII数字、ASCII下划线、ASCII减号连字符组成。
如果给出–lsbsysinit选项,则名称不得以.dpkg-old或.dpkg-dist或.dpkg-new或.dpkg-tmp结尾,并且必须属于以下一个或多个名称空间:
- LANANA分配的命名空间 (^[a-z0-9]+$);
- LSB分层和保留的命名空间 (^_?([a-z0-9_.]+-)+[a-z0-9]+$);
- Debian的cron脚本命名空间 (^[a-zA-Z0-9_-]+$);
如果给出–regex选项,则名称必须与该选项指定的正则表达式相匹配。
文件按其名称的词汇排序顺序(根据C/POSIX语言环境字符整理规则)运行。如果给出–reverse选项,则它们按相反的顺序运行。
命令支持的选项及含义
–test
打印会被run-parts运行的脚本的名称,但不会实际的运行这些脚本。
–list
打印所有匹配的文件名,不局限于可执行,没有执行权限的文件也会打印,但不会实际的去执行。
该选项不能与–test一起使用。
-v, –verbose
在运行前将每个脚本名打印到stderr。
–report
类似于–verbose,但只打印会生成输出的脚本的名称。脚本的名称被打印到脚本首先产生输出的STDUT或STDRR中的任何一个,。
–reverse
反转脚本的执行顺序。
–exit-on-error
一旦脚本以非零退出码返回,则退出。
–lsbsysinit
使用LSB命名空间,而不是默认的行为。
–new-session
在分离的进程回话中运行每一个脚本。如果你使用了这个选项,当你结束掉run-parts时并不会结束当前正在运行的脚本,它会一直运行到结束。
–regex=RE
使用正则表达式RE来验证文件名。参见下面的示例部分。
-u, –umask=umask
在运行脚本前将umask值设置为umask。umask的值应该是八进制的。umask的默认值为022。
-a, –arg=argument
指定要传递给脚本的参数。每个参数单独使用一个–arg选项。
—
表示选项结束,该选项后面所有的参数都会被视为文件名,即使以横线开始。
-h, –help
显示帮助信息然后退出。
-V, –version
打印版本号的信息,然后退出。
使用示例
打印/etc目录下所有名字以p开始且以d结束的文件:
常见错误列表
#1 run-parts: failed to exec /etc/cron.hourly/mailinfo: Exec format error
# cd / && run-parts –report /etc/cron.hourly
/etc/cron.hourly/mailinfo:
run-parts: failed to exec /etc/cron.hourly/mailinfo: Exec format error
run-parts: /etc/cron.hourly/mailinfo exited with return code 1
描述:当我在使用run-parts执行脚本的时候,产生了如上的错误Exec format error,mailinfo命令是个脚本。
原因:因为SHELL脚本中添加Shebang (Unix),emmmm…,就是SHELL脚本开头的那个#!/bin/bash。
解决:在mailfinfo脚本的第一行添加#!/bin/bash,或者#!/bin/sh,根据实际情况而定。
参考文献
- man 8 run-parts
更新日志
2018/05/18 创建文章