crontab:新しいcrontabのインストール - パスが長すぎます。

crontab:新しいcrontabのインストール - パスが長すぎます。

間違い。すべての可能なcrontabエントリを試しましたが、何も許可されていません。いつもpath too long

# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
path too long
crontab: edits left in /tmp/crontab.mqtSoV
[root@myhostname5 tmp]# cat /tmp/crontab.mqtSoV
0 * * * * /tmp/test.sh

Red Hatからリリース

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)

丸太。他のログとJournalctlにはcron関連のエラーはありません。

Sep  5 10:01:01 myhostname5 run-parts(/etc/cron.hourly)[831]: starting 0anacron
Sep  5 10:01:01 myhostname5 run-parts(/etc/cron.hourly)[877]: finished 0anacron
Sep  5 10:01:01 myhostname5 run-parts(/etc/cron.hourly)[831]: starting 0yum-hourly.cron
Sep  5 10:01:02 myhostname5 run-parts(/etc/cron.hourly)[886]: finished 0yum-hourly.cron
Sep  5 10:10:01 myhostname5 CROND[1808]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 10:20:02 myhostname5 CROND[4266]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 10:30:01 myhostname5 CROND[6182]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 10:40:01 myhostname5 CROND[6825]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 10:50:01 myhostname5 CROND[8084]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:00:01 myhostname5 CROND[9467]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:01:01 myhostname5 CROND[9737]: (root) CMD (run-parts /etc/cron.hourly)
Sep  5 11:01:01 myhostname5 run-parts(/etc/cron.hourly)[9737]: starting 0anacron
Sep  5 11:01:01 myhostname5 run-parts(/etc/cron.hourly)[9746]: finished 0anacron
Sep  5 11:01:01 myhostname5 run-parts(/etc/cron.hourly)[9737]: starting 0yum-hourly.cron
Sep  5 11:01:01 myhostname5 run-parts(/etc/cron.hourly)[9752]: finished 0yum-hourly.cron
Sep  5 11:02:16 myhostname5 crontab[9923]: (root) BEGIN EDIT (root)
Sep  5 11:03:36 myhostname5 crontab[9923]: (root) END EDIT (root)
Sep  5 11:03:50 myhostname5 crontab[10043]: (root) LIST (root)
Sep  5 11:04:02 myhostname5 crontab[10057]: (root) BEGIN EDIT (root)
Sep  5 11:04:10 myhostname5 crontab[10057]: (root) END EDIT (root)
Sep  5 11:04:13 myhostname5 crontab[10082]: (root) LIST (root)
Sep  5 11:04:29 myhostname5 crontab[10106]: (root) BEGIN EDIT (root)
Sep  5 11:04:47 myhostname5 crontab[10106]: (root) END EDIT (root)
Sep  5 11:05:13 myhostname5 crontab[10150]: (root) BEGIN EDIT (root)
Sep  5 11:05:20 myhostname5 crontab[10150]: (root) END EDIT (root)
Sep  5 11:05:45 myhostname5 crontab[10202]: (root) BEGIN EDIT (root)
Sep  5 11:06:01 myhostname5 crontab[10202]: (root) END EDIT (root)
Sep  5 11:10:01 myhostname5 CROND[10554]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:20:01 myhostname5 CROND[11984]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:30:02 myhostname5 CROND[12979]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:40:01 myhostname5 CROND[14476]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 11:50:01 myhostname5 CROND[16230]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 12:00:01 myhostname5 CROND[17257]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 12:01:01 myhostname5 CROND[17441]: (root) CMD (run-parts /etc/cron.hourly)
Sep  5 12:01:01 myhostname5 run-parts(/etc/cron.hourly)[17441]: starting 0anacron
Sep  5 12:01:01 myhostname5 run-parts(/etc/cron.hourly)[17450]: finished 0anacron
Sep  5 12:01:01 myhostname5 run-parts(/etc/cron.hourly)[17441]: starting 0yum-hourly.cron
Sep  5 12:01:01 myhostname5 run-parts(/etc/cron.hourly)[17456]: finished 0yum-hourly.cron
Sep  5 12:10:01 myhostname5 CROND[18756]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  5 12:10:26 myhostname5 crontab[18864]: (root) BEGIN EDIT (root)
Sep  5 12:10:37 myhostname5 crontab[18864]: (root) END EDIT (root)
Sep  5 12:10:45 myhostname5 crontab[18898]: (root) BEGIN EDIT (root)
Sep  5 12:11:12 myhostname5 crontab[18898]: (root) END EDIT (root)
Sep  5 12:13:24 myhostname5 crontab[19828]: (root) BEGIN EDIT (root)
Sep  5 12:13:42 myhostname5 crontab[19828]: (root) END EDIT (root)
Sep  5 12:13:57 myhostname5 crontab[19900]: (root) BEGIN EDIT (root)
Sep  5 12:14:09 myhostname5 crontab[19900]: (root) END EDIT (root)
Sep  5 12:15:16 myhostname5 crontab[20132]: (root) BEGIN EDIT (root)
Sep  5 12:15:28 myhostname5 crontab[20132]: (root) END EDIT (root)
Sep  5 12:16:05 myhostname5 crontab[20190]: (root) BEGIN EDIT (root)
Sep  5 12:16:25 myhostname5 crontab[20190]: (root) END EDIT (root)

crontabのジョブを監視します。 /var/..にシンボリックリンクがありません。

# ls -ald /var/ /var/spool/ /var/spool/cron/
drwxr-xr-x. 20 root root 4096 Aug 10 19:14 /var/
drwxr-xr-x. 14 root root 4096 May  2 11:42 /var/spool/
drwx------.  2 root root 4096 Jul  8  2014 /var/spool/cron/


# crontab -l
no crontab for root

ここで、strace の出力は次のようになります。gist.github.com

debuginfoこれが何であるかわかりません。

# yum --enablerepo='*' install cronie-debuginfo
Loaded plugins: priorities, product-id, rhnplugin, subscription-manager
This system is receiving updates from RHN Classic or Red Hat Satellite.
47 packages excluded due to repository priority protections
No package cronie-debuginfo available.
Error: Nothing to do

# yum --enablerepo='*' search debuginfo
Loaded plugins: priorities, product-id, rhnplugin, subscription-manager
This system is receiving updates from RHN Classic or Red Hat Satellite.
47 packages excluded due to repository priority protections
============================================================================================== N/S matched: debuginfo ==============================================================================================
percona-xtrabackup-24-debuginfo.x86_64 : Debug information for package percona-xtrabackup-24
riemann-dash-debuginfo.x86_64 : Debug information for package riemann-dash
yum-plugin-auto-update-debug-info.noarch : Yum plugin to enable automatic updates to installed debuginfo packages
zfs-debuginfo.x86_64 : Debug information for package zfs

  Name and summary matches only, use "search all" for everything.

答え1

エラーが少し奇妙です。詳細を調べるには、gdbcrontabコマンドのdebuginfoパッケージをインストールして、これが何をしたいかを確認できます。私のコマンドは、次のようにして理解したように、パッケージcrontabの一部です。cronie

$ rpm -qf $(command -v crontab)
cronie-1.4.12-5.fc22.x86_64

次のコマンドを使用してdebuginfoパッケージをインストールできますdnf

$ sudo dnf --enablerepo='*-debuginfo' install cronie-debuginfo

これでgdbでコマンドを実行し、Cコードで使用される関数名にアクセスできるようになりました。呼び出すとエラーメッセージが表示されることが確認されたので、ブレークポイントをglue_strings()設定してください。通常は setuid ルートなので、crontabgdb を実行するには root が必要です。 (ここに(gdb)gdbを印刷するためのヒントがあります)。

# gdb crontab
(gdb) break glue_strings

プログラムを起動し、run次のパラメータを入力しますcrontab

(gdb) run -e

glue_strings()呼び出し時に渡されたパラメーター・ダンプを表示する必要があります。

Breakpoint 1, glue_strings (buffer=0x7ffdaa552740 "", buffer_size=4096, 
    a=0x55c50950e567 "/var/spool/cron", b=0x55c5097154c0 <User> "meuh", 
    separator=47 '/') at misc.c:110
110             if (buffer_size <= 0)

c続行するにはコマンドを入力してください。複数の通貨がある可能性があります。放送が終わる前の最後のシーンが一番面白かった。さらに診断するには、この出力を元の投稿に追加してください。


debuginfoを取得するための上記のコマンドはFedoraに適用されます。 Red Hat 7.1の場合は、以下を参照してください。この記事チャンネルリストを言っているようです。

subscription-manager repos --list | grep -i debug

必要なものをアクティブにします。

subscription-manager repos --enable=rhel-rs-for-rhel-7-server-fastrack-debug-rpms

関連情報