:::: MENU ::::
Posts tagged with: CentOS

Cronで走らせていたmysqlが警告を出していた

幾つか運用しているLinux上で、毎週、MySQLのバックアップを取るように設定しているのだが、いつの日からか下記の警告が出ていた。(原稿現在:sl6,mysql:5.1.69)

— Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.

/etc/cron.weeklyにバックアップスクリプトを下記のように記述していた。

mysqldump --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

どうやら、events optionを指定しろと言うことらしいので、引数に–eventsを追加

mysqldump --events --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --events --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

これで、警告は出なくなった。

ちなみに、警告出てた時でも、バックアップ自体は取れてました。


advpngでのNo command specifiedエラー

png画像圧縮プログラムの一つにadvpngがありますが、以前だと、

$ advpng *.png

のコマンドで良かったはずだと記憶してますが、
最近では、下記のエラーとなります。

No command specified [at void process(int, char**):repng.cc:476]

この場合、引数に-zを加えてあげれば問題ないですね。

$ advpng -z *.png

場合によっては、optipngより圧縮されることもあるadvpngは、AdvanceCOMPのパッケージに含まれているので、CentOS系のLinuxでは、EPELからadvancecompをインストールする事によって利用が可能になります。

# yum install advancecomp --enablerepo=epel

 

参考URL

PNG画像のファイルサイズ最小化 — ディノオープンラボラトリ


さくらのVPS上でpulseaudioは不要だね

sl6を走らせているさくらのVPS上で/var/log/messageにpulseaudioがエラー吐きまくっていたので対処。

以前、VNCやらFirefoxを入れた際にGNOME関連で勝手に入ってしまったと推測。

エラーはこんな感じ↓

Aug 26 16:34:14 www pulseaudio[9085]: core-util.c: Failed to connect to sy
stem bus: Failed to connect to socket /var/run/dbus/system_bus_socket: そのよう
なファイルやディレクトリはありません

コンソールモードでサーバにしているので、全く必要ないので、削除。

# yum remove alsa-plugins-pulseaudio pulseaudio

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
alsa-plugins-pulseaudio x86_64 1.0.21-3.el6 @anaconda-ScientificLinux-201107140938.x86_64/6
93 k
pulseaudio x86_64 0.9.21-14.el6_3 @sl 1.9 M
Removing for dependencies:
pulseaudio-module-gconf x86_64 0.9.21-14.el6_3 @sl 19 k
pulseaudio-module-x11 x86_64 0.9.21-14.el6_3 @sl 46 k

Transaction Summary
================================================================================
Remove 4 Package(s)

 


LinuxでDropbox起動時に警告メッセージが出たので対処

Linux上にて、Dropboxを起動するときの症状です。

Dropboxのスクリプトを起動しようとすると、下記のエラー

Unable to monitor entire Dropbox folder hierarchy. Please run “echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches” and restart Dropbox to correct the problem.

親切なメッセージなので、おおせの通りに、

# echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches

で、Dropboxを起動すると直る。

でも、OS起動時に再びこの警告は出てしまうので、/etc/sysctl.confに下記を追記

fs.inotify.max_user_watches = 100000

これを反映させるには、

# sysctl -p

これで、OS起動時にも警告が出なくなる。
(今後のDropboxバージョンアップによっては、出る可能性もある)


treeを使わずにfindでディレクトリツリーリスト表示

Linuxでは、treeコマンドを利用すると、ディレクトリ内のツリー構造を表示させることが出来ますが、標準コマンドではないので、標準コマンドのFindを使って表示させてみます。

$ find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
.
|-dir1
|-dir2
|-dir3

 

ちなみに、treeだとこんな感じ

$ tree -d
.
├── dir1
├── dir2
└── dir3

treeの方が、深い階層の場合にインデントしてくれたり、ファイルを表示してくれたりして便利ですが、treeがない環境の時にfindによる表示方法も覚えておくと良いかもしれません。

ちなみに、treeは、yumやapt-getで簡単にインストールできますね。


ZabbixでLack of free swap spaceのエラーが出るときの対処

Zabbixで監視画面を見てみたら、あるサーバで下記のエラーが出てました。

Lack of free swap space on Server

今では、メモリをふんだんに搭載出来、わざわざSwapを作成する必要がないのですが、どうやらZabbixではswap領域を監視するようなのでエラーが出るようです。

仕方ないので、小さなswap領域を作成して対処します。

# dd if=/dev/zero of=/var/swapfile bs=1M count=2048
# chmod 600 /var/swapfile
# /sbin/mkswap /var/swapfile
# echo /var/swapfile none swap defaults 0 0 | tee -a /etc/fstab
# swapon -a

 


フロッピーディスクがないのにfdエラーが出るときの対処

フロッピーディスクがないPC機や仮想サーバでFDを削除しているのに、Linux上のエラーメッセージに下記のようなフロッピーディスク関連のエラーが出るときの対処です。

end_request: I/O error, dev fd0, sector 0

# /sbin/lsmod |grep -i floppy
floppy 57125 0

# vi /etc/modprobe.d/blacklist
blacklist floppy

# shutdown -r now

Linux上のmodprobeでfloppyを削除してあげるだけですね。


CentOS 5.xのvimが古いので手動でインストール

CentOS 5.x上のyumパッケージでは、vimが7.0と古いので、手動で7.3をインストールした。 7.0のvimで、Bundle導入していると、下記のような沢山のエラーが表示されてしまいます。

……

121: 未定義の変数です: g:unite_source_directory_mru_file
E116: Invalid arguments for function filereadable(g:unite_source_directory_mru_f
ile) && s:mru_file_mtime != getftime(g:unite_source_directory_mru_file)
E15: 無効な式です: filereadable(g:unite_source_directory_mru_file) && s:mru_fil
e_mtime != getftime(g:unite_source_directory_mru_file)
function unite#sources#directory_mru#_append..<SNR>49_save の処理中にエラーが検>
出されました:

….

epelやrpmforgeでもパッケージがないようなので、手動にてインストールです。

  1. まずは、yumでインストールしたvimをアンインストール
    $ sudo yum remove vim vim-enhanced 
  2. ソースのダウンロード
    $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
    $ wget ftp://ftp.jp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
    $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz 
  3. 解凍
    $ tar jxvf vim-7.3.tar.bz2
    $ tar zxvf vim-7.2-extra.tar.gz
    $ tar zxvf vim-7.2-lang.tar.gz 
  4. コンパイル
    $ mv vim72 vim73/
    $ cd vim73 $ cd src
    $ ./configure --enable-multibyte --with-features=huge --disable-selinux --prefix='/usr/local/vim-7.3' 
  5. インストール
    $ sudo make install 
  6. リンク付け
    $ sudo ln -s /usr/local/vim-7.3/bin/vim /usr/local/bin/ 

CentOSにAVGインストール

CentOS 6.3にアンチウィルスソフト「AVG」をインストールした。

ダウンロード

$ wget http://download.avgfree.com/filedir/inst/avg2013flx-r3110-a6015.i386.rpm 

インストール

$ sudo rpm -ivh avg2013flx-r3110-a6015.i386.rpm

OS起動・再起動時に自動起動するように

$ sudo chkconfig avgd on

手動で起動

$ sudo service avgd start Starting avgd [失敗]

手動で定義ファイルアップデート

$ sudo avgupdate /usr/bin/avgupdate: /opt/avg/av/bin/avgupdate: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません /usr/bin/avgupdate: line 17: /opt/avg/av/bin/avgupdate: 成功です

何だかエラーで起動しませんねー ld-linux.so.2がないらしいので、インストール

sudo yum install ld-linux.so.2

再度、手動起動

$ sudo service avgd start Starting avgd [ OK ] 

上手く起動したので、ウィルス定義も再度更新

$ sudo avgupdate
AVG command line update Copyright (c) 2013 AVG Technologies CZ

Running update. Initializing... Downloading file: avg13infolx.ctf Analyzing... Downloading file: u13iavi6100u5196nw.bin 1 / 2 16.46 M Downloading file: lx13core2639b2637pe.bin 1 / 2 16.46 M Analyzing... Preparing installation... Updating... 100% [===================================]

Update was successfully completed.

ウィルス定義更新を毎日更新

$ sudo crontab -e 0 0 * * * /usr/bin/avgupdate > /root/avgupdate.log 2>&1

これで準備は整いました。

ウィルススキャン

まずは、homeディレクトリでもスキャンしてみる。

$ /usr/bin/avgscan /home

Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

Files scanned : 4671(4502)
Infections found : 0(0)
PUPs found : 0
Files healed : 0
Warnings reported : 0
Errors reported : 0

tail avgscan.log
Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

ウィルスチェックを定期的に実行

スキャンするディレクトリを複数指定しますが、/devや/mntは指定しない方がよいでしょう。

$ sudo crontab -e
0 1 * * * /usr/bin/avgscan /home /sbin /bin /usr --report=/root/avg_report.txt > /root/avgscan.log 2>&1

これで、完了です。

ウィルス定義更新とウィルスチェックをcronに登録しましたが、/etc/cron.dailyや/etc/cron.weeklyに自作スクリプト入れても構いません。

私は、/etc/cron.daily下にavg.shのファイルを作りましたけど・・・

こんな感じなので、ご参考まで。


cat /etc/cron.daily/avg.sh

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
DATE=`date +%Y%m%d`
TARGET="/home /var/www"
REPORT=/var/log/avg.$DATE.txt
LOG=/var/log/avg.$DATE.log

/usr/bin/avgupdate
/usr/bin/avgscan $TARGET --report=$REPORT > $LOG 2>&1


Squirrelmailでログインできない(画面が真っ白)の原因と対策

ウェブメール老舗のSquirrelmailを運用していたが、急にログインが出来ない症状が出たので調査した。

環境

  • OS: CentOS 5.9
  • WebServer: Apache 2.2.3
  • PHP: 5.4.10
  • WebMail: Squirrelmail 1.4.16

不具合の原因

  • 突然、ログインが出来ない
  • ログインページからリダイレクト直後にエラーが表示される
  • ブラウザーによっては、ログインページが真っ白になる

調査

apacheやphpのログを確認したところ、下記のエラーが出ていた。

Fatal error: Call to undefined function session_unregister() in /var/www/html/webmail/functions/global.php on line 244

いろいろ、ググったところ、function/auth.phpとplugins/compatibility/function.php内のfunction sqauth_save_password($pass)関数が競合しているので、どちらかをコメントアウトすれば良いかも?との記事を見つけたが、解決に至らずに、原因は別にあった。

どうやら、http://php.net/manual/en/function.session-unregister.phpによると、session_unregister関数はPHP 5.3.0で非推奨となり、PHP 5.4.0で削除されたとの事。

session_unregisterが使えなくなったと言う事が判明したので、はて?次は何をするべきか、公式のSquirrelmailで情報を探ってみた。

Squirrelmailの公式ホームページによると、

ANNOUNCE: PHP 5.4 Compatibility
Dec 01, 2012 by Paul Lesniewski
With the recent release of PHP version 5.4, some community members have helped identify some small issues which we’ve fixed and made available in our daily snapshot packages located on our downloads page. Especially if you use the Mail Fetch plugin and want to upgrade to PHP 5.4, you should download one of our snapshot packages.

UPDATE:If you are running SquirrelMail under PHP 5.4, please help test and refine the patches found here. There is one patch for each of the two SquirrelMail SVN snapshot versions available on our downloads page.

との事なので、Squirrelmailのバージョンを上げて、一部パッチを当てることで解決しそう。

対策

  1. 現ディレクトリのバックアップ
     # mv /var/www/html/webmail /var/www/html/webmail.bak
  2. 最新版の取得(要Subversion)安定版
    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/branches/SM-1_4-STABLE/squirrelmail /var/www/html/webmail

     

    開発版

    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/trunk/squirrelmail /var/www/html/webmail
  3. 属性変更
    Apacheのユーザ・グループに属性を合わせる必要があるので、

    # chown -R apache:apache webmail 
  4. プラグイン導入
    必要なプラグインをPluginsディレクトリへインストール
  5. 再設定
    サーバ設定やプラグイン等を再設定します

    # cd /var/www/html/webmail/config/
    # ./conf.pl 

    データディレクトリが別ディレクトリに保存してあれば、再設定すると良いですが、webmail内に格納してあったら、バックアップディレクトリからコピーしておきましょう。

  6. パッチ適用
    必ずしもパッチを当てる必要はありません(表示がおかしくなった場合のみ)
    /var/lib/squirrelmail/dataにデータフォルダがある場合:
    (正規表現でエラーが出る場合には、メタ文字に¥マークを付けると良い)

    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/trash_folder=Trash/trash_folder=INBOX.Trash/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/draft_folder=Drafts/draft_folder=INBOX.Drafts/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/sent_folder=Sent/sent_folder=INBOX.Sent/g’ {} \;

    DB使っている場合:

    UPDATE userprefs SET prefval = ‘INBOX.Trash’ WHERE prefkey = ‘trash_folder’ AND prefval = ‘Trash’;
    UPDATE userprefs SET prefval = ‘INBOX.Drafts’ WHERE prefkey = ‘draft_folder’ AND prefval = ‘Drafts’;
    UPDATE userprefs SET prefval = ‘INBOX.Sent’ WHERE prefkey = ‘sent_folder’ AND prefval = ‘Sent’;

この辺りまで来たら、もう少しです。

設定や環境に不具合がないか、確認URLで表示させてみます
http://your-squirrelmail-location/src/configtest.phpのように、webmailをインストールしたアドレスにsrc/configtest.phpを付加して確認します。

configtest.phpにアクセスして、エラー箇所がなければ、無事に起動することができました。

補足

参考までに、私の環境では下記のエラーが表示されました。

 ERROR: You have configured PHP not to allow short tags (short_open_tag=off).
This shouldn’t be a problem with SquirrelMail or any plugin coded coded according to the SquirrelMail Coding Guidelines, but if you experience problems with PHP code being displayed in some of the pages and changing setting to “on” solves the problem, please file a bug report against the failing plugin. The correct contact information is most likely to be found in the plugin documentation.

↑ php.ini内のshor_open_tag=offになっているので、Onにする。設定保存後は要Apache再起動

ERROR: You have set ja_JP as your default language, but I cannot find this translation (should be in ../locale/ja_JP/LC_MESSAGES/squirrelmail.mo). Please note that you have to download translations separately from the main SquirrelMail package.

↑ conf.plで設定した言語のロケールがないエラーなので、別途導入

  1. 最新版のロケールをダウンロード
    http://sourceforge.net/projects/squirrelmail/files/locales/
  2. 解凍
    # tar jxvf ja_JP-1.4.18-20090526.tar.bz2 
  3. インストール
    # ./install

    webmailのパスを指定(/var/www/html/webmail)

  4. poファイル作成
    # cd /var/www/html/webmail/po
    # compilepo ja_JP 

ページ:12345