为什么busybox中的crond是僵尸进程?

每天进步一点点 2011-07-12 10:25:47
在嵌入式设备上用crond&命令会得到crond的进程ID
接下来用PS命令会发现crond的STAT是Z,也就是僵尸进程
请问大家这是什么原因?
这是否说明我一直不能正常使用crond的原因就是因为crond实际上并未启动呢?
我还试过直接执行/usr/sbin/crond,但是ps命令下也无crond进程
请问大家到底应该怎样正确启动crond???
这个问题困扰我好几天了,还请大家帮帮忙,非常感谢!
...全文
1263 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdk6513atx 2011-10-26
  • 打赏
  • 举报
回复
crond配置5 * * * * root echo helloword >>/var/log.txt

到5分时启动了服务, 如果没有/var下没有log.txt 也创建了log.txt ,可是cat log.txt 却是空的,请问这是为什么呢?
  • 打赏
  • 举报
回复
问题已解决。
在heshanxingzhe的提示下去找了busybox的源码,发现crond的默认路径确实是/var/spool/cron/crontabs/root
但我机器里没有这个路径,所以看源码前我都以为/etc/crontabs/root是板子中crond的路径。。。
后来自己建了,发现crond&后crond不再是僵尸进程,正常了!!
但是重启后仍然没有成功,最后发现机器重启后都会把文件系统初始化为缺省设置,所以自己写了个脚本每次开机时重建/var/spool/cron/crontabs/root,就OK啦!
感谢heshanxingzhe,给我提供了许多建议,最后想去重新编译busybox时又看了一些编译busybox的资料,学到挺多东西,对于我这样的菜鸟,受益很大,哈哈!
heshanxingzhe 2011-07-12
  • 打赏
  • 举报
回复
/var/spool/cron/crontabs/root文件里有没有加crontab?
我的工作正常,没遇到你说的问题:
root@J2534:/etc/init.d# cat /var/spool/cron/crontabs/root

*/1 * * * * date>/work/crontab.log
root@J2534:/etc/init.d# ps
…………………………………………
…………………………………………
48 root 0:00 [kconservative]
49 root 0:00 [yaffs-bg-1]
61 root 0:00 [yaffs-bg-1]
70 root 0:00 /usr/sbin/inetd
82 root 0:00 [kworker/0:2]
96 root 0:00 -/bin/sh
111 root 5:10 passthru
115 root 0:00 [flush-31:2]
126 root 0:00 /usr/sbin/crond
169 root 0:00 ps
金刚葫芦娃 2011-07-12
  • 打赏
  • 举报
回复
/usr/sbin/crond & 试试.
  • 打赏
  • 举报
回复
1、v1.7.5,版本会低吗?
2、我发现,我新建好/var/spool/cron/crontabs/root,并在root中输入crond的配置后,再在命令行输入/usr/sbin/crond后用ps就能有S状态的/usr/sbin/crond进程了,虽然仍然是:
-bash-4.0# /usr/sbin/crond
-bash-4.0#
但是我的crond配置*/1 * * * * root free>>/mnt/sdcard/log_free.txt仍然没有执行,log中没有任何输出。。。
3、重新编译busybox工程很浩大啊。。是不是也需要重新编译设备的内核?

[Quote=引用 11 楼 heshanxingzhe 的回复:]

楼主的busybox的版本是。。。
busybox的配置(make menuconfig)中,Miscellaneous Utilities --->中勾选:
  • crond
  • Support option -d to redirect output to stderr
  • Report command output via email
  • (usi……
    [/Quote]
heshanxingzhe 2011-07-12
  • 打赏
  • 举报
回复
楼主的busybox的版本是。。。
busybox的配置(make menuconfig)中,Miscellaneous Utilities --->中勾选:
  • crond
  • Support option -d to redirect output to stderr
  • Report command output via email
  • (using sendmail)
    (/var/spool/cron) crond spool directory
  • crontab

    建议楼主重新编译busybox吧。
    或者下载crond的源代码,重新生成crond。
  • 打赏
  • 举报
回复
另外,我敲完/usr/sbin/crond后什么都没有提示,仍回到命令输入状态,如下:
-bash-4.0# /usr/sbin/crond
-bash-4.0#

[Quote=引用 8 楼 heshanxingzhe 的回复:]

没有的话就自己建
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[124]: crond: crond (busybox 1.18.4) started, log level 8
如果找不到配置文件,会有错误提示的:
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[115]: c……
[/Quote]
  • 打赏
  • 举报
回复
是的,没有,刚才忘记说了。这个是配置crond运行路径的吗?

[Quote=引用 8 楼 heshanxingzhe 的回复:]

没有的话就自己建
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[124]: crond: crond (busybox 1.18.4) started, log level 8
如果找不到配置文件,会有错误提示的:
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[115]: c……
[/Quote]
heshanxingzhe 2011-07-12
  • 打赏
  • 举报
回复
没有的话就自己建
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[124]: crond: crond (busybox 1.18.4) started, log level 8
如果找不到配置文件,会有错误提示的:
root@J2534:/# /usr/sbin/crond
root@J2534:/# crond[115]: chdir(/var/spool/cron/crontabs): No such file or directory

还有楼主你的busybox中crond.c中没有这个CONFIG_FEATURE_CROND_DIR宏吗
  • 打赏
  • 举报
回复
我在busybox/config/miscutils/config.in中找到如下一段:
config BUSYBOX_CONFIG_CROND
bool "crond"
default y
select BUSYBOX_CONFIG_FEATURE_SUID
select BUSYBOX_CONFIG_FEATURE_SYSLOG
help
Crond is a background daemon that parses individual crontab
files and executes commands on behalf of the users in question.
This is a port of dcron from slackware. It uses files of the
format /var/spool/cron/crontabs/<username> files,
for example:
$ cat /var/spool/cron/crontabs/root
# Run daily cron jobs at 4:40 every day:
40 4 * * * /etc/cron/daily > /dev/null 2>&1
Note that Busybox binary must be setuid root for this applet to
work properly.
这是否说明/var/spool/cron/crontabs才是唯一的有效路径呢?
那我的设备上没有这个路径,我自己建这个路径可行吗?
另外,我的设备上并不是/etc/crontab而是/etc/crontabs文件下有个root配置文件
还有,我并没有出现你上文第3点的正常启动信息,我输入crond&只会出来一个ID号,请问你的启动信息是通过什么操作得到的?

[Quote=引用 6 楼 heshanxingzhe 的回复:]

1、一般/var/spool/cron和/etc/anacrontab上的路径cron都会搜索(fedora),不过你可以这样确认下:busybox的代码里面看下存放crontabs的路径在哪?
如:busybox-1.18.4/include/autoconfi.h
#define CONFIG_FEATURE_CROND_DIR "/var/spool/cron"
#define EN……
[/Quote]
heshanxingzhe 2011-07-12
  • 打赏
  • 举报
回复
1、一般/var/spool/cron和/etc/anacrontab上的路径cron都会搜索(fedora),不过你可以这样确认下:busybox的代码里面看下存放crontabs的路径在哪?
如:busybox-1.18.4/include/autoconfi.h
#define CONFIG_FEATURE_CROND_DIR "/var/spool/cron"
#define ENABLE_FEATURE_CROND_DIR 1

busybox-1.18.4/miscutils/crond.c
#define TMPDIR CONFIG_FEATURE_CROND_DIR
#define CRONTABS CONFIG_FEATURE_CROND_DIR "/crontabs"

2、实在不行你手动指定crontabs文件也可以试试


3、还有,你确认你的crond已经正常启动了吧,启动crond时的打印信息。
root@J2534:/# crond[123]: crond: crond (busybox 1.18.4) started, log level 8

4、楼主有没有在busybox的make menuconfig中勾选或去选了相关的crond配置?
有没有重新用busybox生成文件系统试试?
金刚葫芦娃 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chemmyhuang 的回复:]
试了一下,/usr/sbin/crond &和crond&的结果一样,都是出来进程ID
但再用PS一看,仍是僵尸进程。。为什么呢?


引用 1 楼 abao623660072 的回复:

/usr/sbin/crond &amp; 试试.
[/Quote]


一般我是调用完,就直接killall掉的.
  • 打赏
  • 举报
回复
我在PC上是可以成功应用crond的,但是我的嵌入式设备上就不行
我的嵌入式设备上并没有/var/spool/
目前我找到两个路径与crond有关:一个是/etc/crontabs/root,我就是在这个root中加入的配置文件
另一个路径是/usr/sbin/crond,这个不是配置文件的,我用vi打开过,全是乱码

[Quote=引用 2 楼 heshanxingzhe 的回复:]

/var/spool/cron/crontabs/root文件里有没有加crontab?
我的工作正常,没遇到你说的问题:
root@J2534:/etc/init.d# cat /var/spool/cron/crontabs/root

*/1 * * * * date>/work/crontab.log
root@J2534:/etc/init.d# ps
……………………………
[/Quote]
  • 打赏
  • 举报
回复
试了一下,/usr/sbin/crond &和crond&的结果一样,都是出来进程ID
但再用PS一看,仍是僵尸进程。。为什么呢?

[Quote=引用 1 楼 abao623660072 的回复:]

/usr/sbin/crond & 试试.
[/Quote]

23,145

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧