cronと同じ環境の対話型シェル


10

私はcrontabの魔法の世界で多くの落とし穴を認識していますが、シェルスクリプトがcrontab。

今私は自分のことを考えましたが/bin/openvt -c8 -- /bin/bash --noprofile -l、ルート権限が必要であり、設定する変数が多すぎ、単純なsu myusername設定では追加の環境がたくさん設定されます。

対話型のbashシェルをcronと同一の環境で起動し、Kubuntuでroot権限を必要としない方法を知っている人はいますか?

sshセッション、GUI、および次のOSの1つ以上で動作する場合のボーナス:HP-UX、Solaris、AIX

回答:


14

実行crontab -eしてエントリを追加

* * * * * export -p > ~/cron-env

(Solaris、またはPOSIXシェルを使用せずにそのコマンドラインを解釈しないシステムの場合、そのシステム上にある/usr/xpg4/bin/sh -c 'export -p > ~/cron-env'標準へのパスを使用shします)。

1分待って、その行を削除します。

これで、cron-envファイルがホームディレクトリにあるはずです。

次に実行できます:

cd && env -i sh -c '. ./cron-env; exec sh'

cronジョブが取得したのと同じ環境でシェルを起動します。


おもしろい、1時間ほどで戻ってきたらチェックする。
ジッピー

素晴らしい、夢のように動作します!
ジッピー

最も優れた答え。できれば複数回投票します。
スキマスイッチ

2

Cronはインタラクティブなシェルではないので、それが最初の問題です。ただし、ほとんど無視できます。

本当のことは:環境変数です。cronメールのヘッダーを見てそれらを見つけ、シェルで変数を設定してそれらに一致させ、残りのすべての変数の設定を解除します。

これで、cronが認識するように、環境にかなり近づきました。


一部の環境を含むメールヘッダーに気づかなかったため、デフォルトではThunderbirdはこれらをユーザーから隠しています。残念ながら、ヘッダーは完全な環境を完全に表すものではありません。
jippie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.