Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. Mojolicious

rootユーザーでいるときに、一般ユーザーにスイッチしてコマンドを実行する方法 / Mojolicious

rootユーザーでいるときに、一般ユーザーにスイッチしてコマンドを実行するには、以下のようにsu-cオプションを使用します。

su - ユーザー名 -c コマンド

最近はWebアプリケーションを作成しているのですけれど、rootユーザーから一般ユーザーにスイッチして、アプリケーションを実行する一番よい方法はなにかなぁと最近考えています。これは、サーバーが起動したときに、自動的にWebアプリケーションを実行したいし、rootユーザーからWebアプリを管理したいからです。

suとsudoはどちらがいいかなぁと考えているのですがsudoは端末(tty)からではないと実行できないというデフォルトの設定が入っていることがあるため、suのほうがいい気がします。コマンドをダブルクォートで囲まないといけないのが、すこし面倒ですけども。

サンプルとしては次のようなシェルを記述します。

#!/bin/sh

PERL_BIN=/home/gitprep/perl5/perlbrew/perls/perl-5.16.3/bin
su - gitprep -c "PATH=$PERL_BIN:$PATH /home/gitprep/webapp/gitprep/gitprep $*"

PATHをきちんと設定してあげる必要あるところもポイントです。なぜなら端末にログインしているわけではないのでPATHの編集を行っている.bashrcが読み込まれないからです。どのPerlを使うのかは、デフォルトのPerlをつかない場合は指定する必要があります。

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。