web-dev-qa-db-ja.com

crontab -eは、このユーザーのcrontabを開きません

数か月前にcrontabを使用していくつかのジョブを設定しましたが、数日前まではうまく機能していましたが、実行されていませんでした。 crontab -eを使用して、ジョブを作成したユーザーを使用してcrontabファイルを確認しようとしましたが、ファイルが開きません。ターミナルはすぐに画面に移動し、コマンドを入力した画面に戻ります。何がそこにあるのかを見るには、あまりにも早く戻ってしまいます。

私は(Sudoとして)/var/spool/cron/crontab/の下でチェックしましたが、言及されたユーザー用のファイルがあり、基本が含まれています:

> DO NOT EDIT THIS FILE - edit the master and reinstall.
> (- installed on Wed Mar 21 00:12:22 2018)
> (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

Isntallの日付は、cronジョブが停止した場所とほぼ同じです。何らかの理由でシステムを再起動する必要があるかもしれません...

マシンを再起動し、もう一度試してみました:crontab -e、今回はEmacs(デフォルトのエディター、私は信じています)から次のエラーが出ました:

emacsclient: can't find socket; have you started the server?
To start the server in Emacs, type "M-x server-start".

Warning: due to a long standing Gtk+ bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715

.... [truncated]

そこで、デフォルトのエディターをnanoに変更しました。

user@user:~$ select-editor 

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/code
  4. /usr/bin/emacs24
  5. /usr/bin/vim.tiny

Choose 1-5 [2]: 2

...そして再試行:

user@user:~$ crontab -e

これは、最初に説明したのと同じ問題を引き起こしただけです-すぐにファイルを開き、再度閉じるように見えました。

元のcrontabファイルをデバッグして(できれば)戻す別の方法はありますか?ジョブはセットアップが複雑になりました(下記の注2を参照):-/

this answer を使用して実行中のcrontabタスクを見つけようとしましたので、cronが実行されていますが、crontabタスクはどうですか?

user@user:~$  ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"
1077  1077 /usr/sbin/cron -f

その他の注意事項:

  • アナクロンがインストールされています
  • cronジョブ自体は、外部スクリプト経由ではなく、crontabファイルで定義されます
  • 1つのcronjobが仮想envを使用しましたが、このenvはまだ存在しており、手動でジョブを実行できます

更新:

いくつかのさらなるチェックからの出力(ほとんどが@steeldriverによって要求されます)

user@user:~$ ls -l $(which crontab)
-rwxr-sr-x 1 root crontab 36080 Apr  5  2016 /usr/bin/crontab

そこにsetuidsがありますか?私はそれをpingと比較しました、なぜなら私はそれが何らかの昇格された許可を持つべきだと読んだからです:

user@user:~$ ls -l $(which ping)
-rwsr-xr-x 1 root root 44168 Mai  7  2014 /bin/ping

crontabをSudoとして実行:

user@user:~$ Sudo crontab -e
[Sudo] password for user: 
no crontab for root - using an empty one
No modification made

ユーザーのセットアップを使用して、目的のコマンドをSudoとして試行します。

user@user:~$ Sudo -H -u user bash -c 'crontab -e'
No modification made

スプール全体の許可が期待どおりかどうかを確認します。

user@user:~$ ls -ld /tmp
drwxrwxrwt 16 root root 36864 Apr  1 14:22 /tmp
user@user:~$ Sudo namei -l /var/spool/cron/crontabs/$USER
f: /var/spool/cron/crontabs/user
drwxr-xr-x root    root    /
drwxr-xr-x root    root    var
drwxr-xr-x root    root    spool
drwxr-xr-x root    root    cron
drwx-wx--T root    crontab crontabs
-rw------- user    crontab user
2
n1k31t4

結果を投稿し、おそらく同じことを見ている人を助けるために-これは私の元の質問の下のコメントの要約です

crontab -eを使用することが問題の始まりでした-何もしませんでした。

Emacsのセットアップが原因であることが判明しました(ただし、他のエディターが何らかの理由でこの問題を引き起こす可能性があります)。

@steeldriverのEDITOR=/bin/nano crontab -e(crontabにnanoを強制的に使用させようとする試み)のアドバイスに従うことは役に立ちませんでした。

スクリーンキャストを記録し、ファイルがすぐに開くフレームで停止しました-これはEmacsのスプラッシュスクリーンでした。

~/.profileには設定があり、Emacsデーモンがエディターへの呼び出しをハイジャックしました。これらの設定を削除して再起動した後、ユーザーが作業したときにcrontab -e

設定は、これの誤ってコピーアンドペーストされたバージョンのようです(Emacs wikiにあります):

export ALTERNATE_EDITOR=""
export EDITOR="emacsclient -t"                  # $EDITOR should open in terminal
export VISUAL="emacsclient -c -a emacs"         # $VISUAL opens in GUI with non-daemon as alternate

[実際の間違いがどこにあったか覚えていない]

元のcrontabファイルは失われました。私はまだそれがどのように起こったか理解していません

0
n1k31t4