WorkingDirectory=/foo/bar
のように指定すればOK。WorkingDirectory=/foo/bar
のように指定すればOK。client_max_body_size 10M;
で10MBまでになる。# /etc/cron.d/anacron: crontab entries for the anacron package
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
30 7-23 * * * root [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
30 7-23 * * *のところを、30 3-23 * * *に変更する必要がある。
/lib/systemd/system/anacron.timerは、以下のようになっている。[Unit]
Description=Trigger anacron every hour
[Timer]
OnCalendar=*-*-* 07..23:30
RandomizedDelaySec=5m
Persistent=true
[Install]
WantedBy=timers.target
OnCalendar=*-*-* 07..23:30を、OnCalendar=*-*-* 03..23:30に変更する必要があるのだが/lib/systemd/system/anacron.timerを直接変更しても、anacronの更新でもとに戻ってしまう可能性があるため、sudo systemctl edit anacron.timer
でエディタがひらくので、[Timer]
OnCalendar=
OnCalendar=*-*-* 03..23:30
RandomizedDelaySec=5m
Persistent=true
を追記。daemon-reloadは必要ないらしいけど、念のためdaemon-reloadを行っておく。$ sudo systemctl daemon-reload
anacron、インストールされていたから使ってみたけど、このサーバだとcronでいいような気がする。anacronは、cronと違って、実行時間にサーバが停止していても、サーバ起動後に再実行してくれる点と、実行時間をランダムに遅延してくれる点があるんだけど、どちらもこのサーバだと特にメリットないんだよね。大規模なシステムならメリットもあるのかもしれないけど、「実行時間にサーバが停止していても、サーバ起動後に再実行してくれる」って逆にあぶなくないですかね?大規模なシステムだと、夜間ジョブのスケジュールもタイトに組まれているので、もし夜間ジョブが実行されなかったら手動でリカバリしないと、他の動作に影響しそうではある。$ sudo systemctl restart cron
でcronを再起動するのを忘れている。30 7-23 * * * root [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
となっていて、Anacronは7時から23時の30分に実行されるようになっている。
07:30にその日初めての実行が行われて、日次ジョブが動く。仮に、07:30の時点でシステムが止まってたら、08:30にリトライ、という動きなのかな。
7時から動くようになってるのを、3時から動くようにしたら期待通りの動きになるかな?
Anacron使ったことなかったから、全然知らなかった。Cronでいいんじゃないの?と思ったけど、実行時間にシステムが止まってたらリトライしてくれんのはちょっとメリットかも。START_HOURS_RANGE=3-22
を追加してみる。
この設定行、普通は最初からあるみたいだけど、このサーバはこの行の記載がなかった。$ ls -l /var/spool/anacron
total 12
-rw------- 1 root root 9 Jan 2 07:38 cron.daily
-rw------- 1 root root 9 Dec 26 21:18 cron.monthly
-rw------- 1 root root 9 Jan 2 07:43 cron.weekly
どこで実行時間が決まるんだろ?12 3 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
と設定されているが、test -x /usr/sbin/anacronの結果がtrueなので、結果として03:12に、/etc/cron.dailyは実行されない。
/etc/cron.d/anacronは以下が設定されている。# /etc/cron.d/anacron: crontab entries for the anacron package
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
30 3-23 * * * root [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi
3時から23時の間の毎時30分に、anacronの実行を行う。syslogを見ても、そのように実行されているのが判る。
/etc/anacrontabの設定は以下。# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
# These replace cron's entries
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
START_HOURS_RANGE=3-22が設定されているので、システムが動いていれば3時には日次ジョブが実行されるはずなのだが。。。
他にも設定すべきところがあるのかな?FILES
/etc/anacrontab
Contains specifications of jobs. See anacrontab(5) for a complete description.
/var/spool/anacron
This directory is used by Anacron for storing timestamp files.
/lib/systemd/system/anacron.service
This file provides systemd service for anacron.
/lib/systemd/system/anacron.timer
This file provides systemd timer for anacron. Currently the service is triggered hourly through systemd timer.
という記述がある。
/lib/systemd/system/anacron.timerっていうファイルがあるのか。
中を見てみると、[Unit]
Description=Trigger anacron every hour
[Timer]
OnCalendar=*-*-* 07..23:30
RandomizedDelaySec=5m
Persistent=true
[Install]
WantedBy=timers.target
となってる。OnCalendar=*-*-* 07..23:30の設定があるから7時から動き始めるのか。ただ、Ubuntuでは、/lib/systemd/system/のファイルを直接変更しても、パッケージの更新で上書きされてしまうようなので、ちょっと変更方法を調べてみる。
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0598sudo systemctl edit anacron.timer
で、エディタが立ち上がるので、以下を入力。[Timer]
OnCalendar=
OnCalendar=*-*-* 03..23:30
RandomizedDelaySec=5m
Persistent=true
OnCalendar=で一回元の設定をクリアしてから03:00-23:30の設定を行う。また、RandomizedDelaySec、Persistentは元のファイルを同じ値を記述した。RandomizedDelaySec、Persistentは記述する必要はないのかな?
この方法だと、daemon-reloadは必要ないらしいけど、念のためdaemon-reloadを行っておく。$ sudo systemctl daemon-reload
これで明日、3時台に日次ジョブが実行されるんではないかと思う。sudo apt install xrdp
再起動後にもXrdpサーバを起動するようにする。
sudo systemctl enable xrdp
後はFireWallを使っているのであれば、ポート3389のTCP接続を有効にする。
macからの接続は、Parallels Clientを使う。試してないけど、Windowsなら標準のリモートデスクトップで行けると思う。
注意点としては、リモートデスクトップで接続するユーザーは、Ubuntuからログアウトしておく。ログインしたままだと、エラーは全く出力されないが、画面は真っ黒、という状態になった。ちょっとはまった。find /foo/bar -type f -name "*.log" -mtime +90 | xargs rm -f
これで、/foo/bar以下の、ファイル拡張子が.logで、更新日時が90日以上前のものが削除される。 いっつも、アレ?どうやるんだっけ?となるのでメモ。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): <<<< Enterキー
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): <<<< パスワード入力
Enter same passphrase again: <<<< パスワード入力
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff user@local.local
The key's randomart image is:
+--[ RSA 2048]----+
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
+-----------------+
以上で、鍵ペア(公開鍵と秘密鍵)ができましたので、公開鍵を接続先のサーバーにscpで転送します。$ scp .ssh/id_rsa.pub user@remote.net:
The authenticity of host '[remote.net] ([99.999.999.999])' can't be established.
RSA key fingerprint is ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[remote.net],[99.999.999.999]' (RSA) to the list of known hosts.
user@remote.net's password:
id_rsa.pub
次はサーバー側の作業です。ちゃんと公開鍵が転送されているかを確認します。$ pwd
/home/user
$ ll | grep id_rsa.pub
-rw-r--r-- 1 user user 408 Jul 8 20:41 id_rsa.pub
次に、.ssh/authorized_keysに公開鍵の内容を登録します。.sshディレクトリがない場合、作成しておいてください。$ cat id_rsa.pub >> .ssh/authorized_keys
authorized_keysのパーミッションを変更します。$ chmod 600 .ssh/authorized_keys
転送した公開鍵を削除しておきます。$ rm id_rsa.pub
次に、クライアントから鍵方式で接続できるかを確認します。$ ssh -i ~/.ssh/id_rsa user@remote.net
接続できました!$ sudo aptitude -y install jfbterm
$ jfbterm
use_localtime=YES
変更した後は、service vsftpd reload
で設定を再読み込みさせるのをお忘れなく。
その後、FTPクライアントでファイル一覧を表示して、ファイルの作成/更新日時がローカルタイムになっているのを確認してみてください。