権限が厳しく制限されたユーザーがいます。
crontabを変更できますが、デフォルトエディタはですnano
。vi
これは慣れていて、本番環境を中断したくない場合に実際の問題になる可能性があります。
変数をエクスポートまたは宣言できないため、export EDITOR='vi'
機能EDITOR=vi crontab -e
しません。 vi(またはnano)を直接実行することもできないので、実際にどのように処理するのかわかりません。
これらの制限を回避する方法はありますか?
私の制限に関するアイデアを提供するために、ログインメッセージは次のとおりです。
You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
「?」の結果コマンドは次のようになります。
cd clear crontab exit help history lpath ls lsudo php pwd
編集:私のOSのバージョンを見つけるのを忘れました。
/proc/versionによると、
Linuxバージョン2.6.26-2-amd64(Debian 2.6.26-29)([Eメール保護])(gccバージョン4.1.3 20080704(プレリリース)(Debian 4.1.2-25
))#1 SMP Sun Mar 4 2012 21:48:06 UTC
...そしてcat /etc/debian_version
言ってみてください5.0.10
(何?!)
今、Ubuntuに慣れていますが、まだ少し驚きました。
答え1
使用法メッセージで判断すると実行中です。シェル。これはbash、ksh、zsh、BusyBoxなどのBourneスタイルのシェルではありません。 rkshやrbashなどの制限されたシェルではありません。特定のパラメータを使用して固定命令セットを実行する以外に、変数、リダイレクト、またはその他の機能はありません。
viを実行できる場合は、lshellにバグや設定エラーがあることを意味します。ランダムな命令が実行されないように設計されています。
これで実行できるので、php
問題を解決できます。しかし、明らかに管理者はあなたがそうすることを望んでいません。
crontabは通常非常に短いので、他のエディタで編集するには十分な大きさの端末を開き、GUIクリップボードを介してコンテンツ全体をローカルシステムにコピーし、編集して別の方向にコピーします。 nanoでは、自動単語改行(Alt+Lに切り替え)と(しかしcrontabでは重要ではありません)、自動インデント(Alt+)をオフにする必要がありますI。
答え2
システムとファイルをやり取りできる場合は、現在のcrontabをバックアップしてください。
$ crontab -l >crontab.txt
リダイレクトできない場合は、crontab -l
crontabをコピーして貼り付けてください(すべてが同じであることを確認してください)。
次に、ロックされていないシステムでcrontabテキストファイルを使用してエディタで更新します。
ファイルを再度転送して実行します。
$ crontab crontab.txt
作業仕様が正しいかどうかを含む、適切なテストを本番サーバーで実装する前に、同じ開発サーバーで実行する必要があります。crontab
このようにcrontabをロードすることに注意してください現在のcrontabの交換。
私は責任を負いません。