Ubuntu では root を使わずに sudo することになるのですが デフォルトでは 1 度 sudo してから 5 分 sudo しないと 再度パスワードの入力を求められます。
通常はそれで良いのですが まとまった作業をしているときなどは もう少し長くしたいときがあります。
sudo の設定は /etc/sudoers を visudo コマンドで編集するのですが
Ubuntu10.04 だとエディタは nano が起動するので env で環境変数を変えて vi にします。
(これは私が nano を使えないからです・・・)
$ sudo env EDITOR=/usr/bin/vi visudo
元々ある Defaults の下辺りに追加します。
Defaults env_reset ←既存
Defaults timestamp_timeout = 20 ←追加
これでタイムアウトまでの時間が 20 分になりました。
Defaults はカンマで区切って 1 行で書いても OK です。
Defaults env_reset, timestamp_timeout = 20
前に PPA を使って nginx (1.0.5) を Ubuntu10.04 に入れたときの configure の内容を 書きましたが、 PPA を使わない nginx 0.7.65 の内容も書いておきます。
$ nginx -V
nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments:
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/lock/nginx.lock
--http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--with-debug
--with-http_stub_status_module
--with-http_flv_module
--with-http_ssl_module
--with-http_dav_module
--with-http_gzip_static_module
--with-http_realip_module
--with-mail
--with-mail_ssl_module
--with-ipv6
--add-module=/build/buildd/nginx-0.7.65/modules/nginx-upstream-fair
こちらもメモ。
PostgreSQL の SEQUENCE には CACHE という設定があります。 (Oracle などにもあります)
この機能は高速化のためのもので、事前に SEQUENCE をまとめて 取得しておき、大量に SEQUENCE を発行するときに 何度も SEQUENCE を更新しないようします。
実際の動きを見てみます。
db=# CREATE SEQUENCE test_seq CACHE 3;
CACHE のみ設定して(他はデフォルトで)作成しました。
下のように設定されています。
db=# SELECT last_value, cache_value FROM test_seq; -[ RECORD 1 ]-- last_value | 1 cache_value | 3
nextval() で値を取得します。
db=# SELECT nextval('test_seq'); → 1 が返る
SEQUENCE は次のようになります。
db=# SELECT last_value, cache_value FROM test_seq; -[ RECORD 1 ]-- last_value | 3 cache_value | 3
1 回しか nextval() していませんが last_value は 3 になっています。 これは 1 を取得したときに 2, 3 をキャッシュとして取得しているためです。
もちろん nextval() を続ければ 2, 3 を取得できます。
db=# SELECT nextval('test_seq'); → 2 が返る db=# SELECT nextval('test_seq'); → 3 が返る
これでキャッシュした分を使い切ってしまったのですが さらに nextval() してみます。
db=# SELECT nextval('test_seq'); → 4 が返る
この状態で SEQUENCE は次のようになります。
db=# SELECT last_value, cache_value FROM test_seq; -[ RECORD 1 ]-- last_value | 6 cache_value | 3
このように、キャッシュを使い切ると新しくキャッシュを取得しなおします。 デフォルトでは CACHE が 1 なので取得するごとにキャッシュを使い切っているわけです。
キャッシュはセッション内でのみ有効です。 この状態は、このセッション以外からは 6 まで使用済みとして扱うため 別のセッションで nextval() すると次のように 7 が返ります。
[別セッション] db=# SELECT nextval('test_seq'); → 7 が返る [このセッション] db=# SELECT nextval('test_seq'); → 5 が返る
そのためキャッシュを使用すると SEQUENCE の値が時系列に 並ばないことがあるので注意が必要です。