ioniceとnice

[ガラケー版(QRコード)] 総閲覧回数:3,684,876回 / ブログ拍手:2,295
作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。
アクセス記録[推移 / PV内訳(過去1日 / 過去1週間) / 外部アクセス元 (昨日 / 過去1週間) / ログイン論客足跡]
プロフィール私書(メール)
   /   /送済
評価(一覧   /)
投票   /共:   /
ファン登録
作品/情報/
DB構築()
ブログ
[書く]
攻略記事リンク集
My Play List
<=新記事2009/04/30 サーバーリブート終了 & 本日の定期更新処理の遅れの報告
=>古記事2009/04/28 Blu-rayの20倍ホログラフィック/ 豚インフル/ 体罰 or Not裁判

1.
2009/04/29 Linux > ノウハウ > ioniceとnice」
[この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]

1. ノウハウ
    1. ioniceとnice
    2. ioniceとniceの例
    3. alias
2. man
    1. ionice
    2. nice
    3. sudo

1. ノウハウ


    1. ioniceとnice

ioniceはディスクIOの使用状況に応じたそのプロセスの割り当て優先度を決めてくれる。
niceはCPUの使用状況に応じたそのプロセスの割り当て優先度を決めてくれる。
Webサーバー上などで何らかのコマンドを実行する時、その処理は負荷が高いけれども、ウェブサーバー側の処理を邪魔したくない、という場合は多いと思いますが、そういう時にionice, niceコマンドの組み合わせは有効です。
    2. ioniceとniceの例

nice、ioniceはジョブの優先度を上げる為にも使えますが、中々そういうケースは少ないと思われるので、優先度を下げる例だけ挙げておきます。

以下よく使う組み合わせ。

例1.
ionice -c2 -n7 nice -n19 $COMMAND
ioniceのroot以外の一般ユーザーが指定できる優先度は0-7。
niceの一般ユーザーが指定できる優先度は10-19。
その範囲で一番優先度が低い割り当てをしています。

例2.
sudo -u root ionice -c3 nice -n 19 $COMMAND
ionice -c3 はディスクIOが無い時だけそのCOMMANDを実行させます。
IOに応じた処理としては究極の最低優先度ジョブですが、これはroot権限でしか実行できません。
なので、
/etc/sudoers
でioniceを目的とするユーザーがroot権限で実行できるように(sudo -u root $COMMANDで使える)しています。
但し、コマンドの実行自体rootとして実行されるので、その点注意。
あと、ionice -c3が何故rootでしか実行出来ないのかも理解しておく必要があります。
ionice -c3はIOが途絶えた時に動くわけですが、それが他のユーザーも書き込みたいファイルなどを使ってしまっている時、もしもシステムがずっとBusy状態だとio解放待ちの-c3で実行されたコマンドがずっとそれがリソースを開放せず、他のユーザーがそのリソースを使えなくなってしまうからです(その点注意しなくてはいけない)。
    3. alias

ウェブサーバー上での作業では大体この制限を付けて実行した方が良いと思われるので、aliasを登録しておくのも良いでしょう。

vi ~/.bash_profile; # 編集
...
alias allnice='ionice -c2 -n7 nice -n19'
alias rootnice='sudo -u root ionice -c3 nice -n19' 
...
. ~/.bash_profile; # 環境に反映
2. man

以下上記コマンドのmanで出したmanual文章。
ioniceは日本語版が用意されていない模様。
    1. ionice

ionice(1)                                                            ionice(1)



NAME
       ionice - get/set program io scheduling class and priority

SYNOPSIS
       ionice [-c] [-n] [-p] [COMMAND [ARG...]]


DESCRIPTION
       This  program  sets the io scheduling class and priority for a program.
       As of this writing, Linux supports 3 scheduling classes:

       Idle. A program running with idle io priority will only get  disk  time
       when no other program has asked for disk io for a defined grace period.
       The impact of idle io processes on normal  system  activity  should  be
       zero. This scheduling class does not take a priority argument.

       Best  effort. This is the default scheduling class for any process that
       hasn’t asked for a specific io priority. Programs inherit the CPU  nice
       setting  for  io  priorities. This class takes a priority argument from
       0-7, with lower number being higher priority. Programs running  at  the
       same best effort priority are served in a round-robin fashion.

       Real  time.  The RT scheduling class is given first access to the disk,
       regardless of what else is going on in the system. Thus  the  RT  class
       needs  to  be used with some care, as it can starve other processes. As
       with the best effort class, 8 priority levels are defined denoting  how
       big  a  time slice a given process will receive on each scheduling win-
       dow.

       If no arguments or just -p is given, ionice will query the  current  io
       scheduling class and priority for that process.


OPTIONS
       -c     The  scheduling class. 1 for real time, 2 for best-effort, 3 for
              idle.

       -n     The scheduling class data. This defines the class data,  if  the
              class accepts an argument. For real time and best-effort, 0-7 is
              valid data.

       -p     Pass in a process pid to change an already running  process.  If
              this  argument  is not given, ionice will run the listed program
              with the given parameters.


EXAMPLES
       # ionice -c3 -p89

       Sets process with PID 89 as an idle io process.

       # ionice -c2 -n0 bash

       Runs ’bash’ as a best-effort program with highest priority.

       # ionice -p89

       Returns the class and priority of the process with PID 89.


NOTES
       Linux supports io scheduling priorities and classes since  2.6.13  with
       the CFQ io scheduler.


AUTHORS
       Jens Axboe <axboe @ suse.de>

    2. nice

nice(1)                                                                nice(1)



名前
       nice - スケジュール優先度を変更してプログラムを実行する

書式
       nice  [-n  adjustment] [-adjustment] [--adjustment=adjustment] [command
       [arg...]]

       nice [--help] [--version]

説明
       引数なしで実行すると、 nice は自身が継承したスケジューリング優先度を 表
       示 する。それ以外の場合には、 nice はスケジューリング優先度を調整してか
       ら与えられた command を実行する。

       adjustment が与えられなかった場合には、 command の優先度は 10 増加さ れ
       る。 nice によって調整できる優先度の範囲は -20 (優先度最高) から 19 (優
       先度最低) までである。負の adjustment を与えるには適切な特権 (通常は ス
       ーパーユーザー権限) が必要である。

       ほ とんどのシェルには同名の組み込みコマンドがあるので、単に ‘nice’ とし
       て実行すると、ここで記述されたものとは異なった機能のものが実行される だ
       ろう。

オプション
       -n adjustment, -adjustment, --adjustment=adjustment
              command の優先度に加える値を、 10 ではなく adjustment にする。

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

注意
       プ ログラムのバグについては bug-sh-utils @ gnu.org に報告してください。ペ
       ージの更新は Ragnar Hojland Espinosa <ragnar @ ragnar-hojland.com> が行っ
       ています。

    3. sudo

sudo(8)                      MAINTENANCE COMMANDS                      sudo(8)



名前
       sudo - 別のユーザとしてコマンドを実行する

書式
       sudo -V │ -h │ -l │ -L │ -v │ -k │ -K │ -s │ [ -H ] [-P ] [-S ] [ -b ]
       │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [ -u username│#uid ]
       command

説明
       sudo は、許可されたユーザに対して、スーパーユーザや別のユーザの権限で
       command を実行することを許す。この指定は sudoers ファイルでなされる。実
       ユーザ ID・グループ ID と実効ユーザ ID・グループ ID は、成り代わるユー
       ザのものと置き換えられる。 passwd ファイルでの指定が用いられる。 (成り
       代わるユーザが root でない場合、ユーザの入っているグループも初期化され
       る)。デフォルトでは、sudo はパスワードを使った自分自身に対する認証を必
       要とする (注意:このときのパスワードはそのユーザのパスワードであり
       、root パスワードではない)。一度ユーザが認証されると、タイムスタンプが
       更新され、短い期間 (sudoers で上書きされない限り、デフォルトでは 5 分
       間) パスワードなしで sudo を使うことができる。

       sudo は、権限のあるユーザが誰かを /etc/sudoers ファイルによって決定する
       。 sudo に -v フラグをつけて実行すると、 command を実行することなく、タ
       イムスタンプを更新できる。パスワードプロンプト自身も、ユーザのパスワー
       ドが 5 分間入力されないとタイムアウトする (sudoers で上書きされない限
       り)。

       sudoers ファイルに記載されていないユーザが sudo を使ってコマンドを実行
       すると、誰か偉い人にメールが送られる。偉い人を誰にするかは (コンパイル
       の) 設定時または sudoers ファイルで定義される (デフォルトでは root) 。
       権限のないユーザが -l または -v フラグをつけて sudo を実行した場合は、
       メールが送られないことに注意すること。これにより、ユーザは自分が sudo
       が使用可能であるかを自分自身で調べることができる。

       sudo は成功した命令・失敗した命令の両方を (あるいはエラーも)、 sys-
       log(3) やログファイル (あるいはその両方) に記録できる。デフォルトでは
       sudo は syslog(3) を使ってログをとる。これはコンパイルの設定時または
       sudoers ファイルで変更できる。

オプション
       sudo は、以下のコマンドラインオプションを受け付ける:

       -V  -V (version) オプションが指定されると、 sudo はバージョン番号を表示
           して終了する。このコマンドを呼び出したユーザが既に root であった場
           合、 -V では sudo をコンパイルした時のデフォルト値のリストと、マシ
           ンのローカルネットワークアドレスを表示する。

       -l  -l (list) オプションが指定されると、そのユーザ対して現在のホスト上
           で許可された (禁止された) コマンドがリストされる。

       -L  -L (list defaults) オプションが指定されると、 Defaults 行に設定でき
           るパラメータが短い説明をつけてリストされる。このオプションは
           、grep(1) と一緒に使うと便利である。

       -h  -h (help) オプションが指定されると、 sudo は使用法のメッセージを表
           示して終了する。

       -v  -v (validate) オプションが指定されると、 sudo はユーザのタイムスタ
           ンプを更新する。必要ならば、ユーザのパスワードを問い合わせるプロン
           プトを出す。このオプションは、コマンドを実行することなく、 (sudoers
           でタイムアウトが何分に設定されていても) sudo のタイムアウトを更に 5
           分間延長する。

       -k  -k (kill) オプションが指定されると、 sudo は有効期間を紀元年
           (epoch) に設定することで、ユーザのタイムスタンプを無効にする。次回
           sudo を実行するときは、パスワードが必要とされる。このオプションには
           パスワードが必要ない。ユーザが .logout ファイルで sudo 権限を取り消
           すことができるように追加された。

       -K  -K (sure kill) オプションが指定されると、 sudo は ユーザのタイムス
           タンプを完全に削除する。このオプションにはパスワードが必要ない。

       -b  -b (background) オプションが指定されると、 sudo は指定されたコマン
           ドをバックグラウンドで実行する。 -b を使った場合、プロセスの操作に
           シェルのジョブ制御を使うことができない点に注意すること。

       -p  -p (prompt) オプションが指定されると、デフォルトのパスワードプロン
           プトを上書きして、カスタム化したものを使うことが可能になる。プロン
           プトに %u エスケープがある場合、 %u はユーザのログイン名に置き換え
           られる。同様に、%h はローカルホスト名に置き換えられる。

       -c  -c (class) オプションが指定されると、 sudo は指定されたコマンドをロ
           グインクラスで指定されたリソースの制限内で実行する。引き数 class に
           は、/etc/login.conf で定義されているクラス名を指定するか、あるいは
           1 個の ’-’ 文字を指定することができる。 class を - に指定すると、コ
           マンドは、そのコマンドを実行されたユーザのデフォルトのログイン権限
           によって制限を受ける。引き数 class が存在しているユーザクラスを指定
           している場合、コマンドは root として実行されなければならない (もし
           くは sudo コマンドを既に root になっているシェルから実行しなければ
           ならない)。このオプションは、BSD ログインクラスのあるシステムでのみ
           有効で、かつ sudo に --with-logincap オプションが設定されていること
           が必要である。

       -a  -a (authentication type) オプションが指定されると、 sudo はユーザの
           認証に /etc/login.conf で許可されている認証タイプを使用する。システ
           ム管理者は /etc/login.conf に "auth-sudo" エントリを追加することに
           より、 sudo 独自の認証法を指定することができる。このオプションは
           BSD 認証をサポートするシステムで、 sudo に --with-bsdauth オプショ
           ンが指定されて (コンパイルされて) いる場合にしか使用できない。

       -u  -u (user) オプションが指定されると、 sudo は root 以外のユーザとし
           て指定したコマンドを実行する。 username でなく uid を指定する場合は
           、#uid を使うこと。

       -s  -s (shell) オプションが指定されると、環境変数 SHELL が設定されてい
           る場合は、そのシェルを実行する。さもなければ、passwd(5) で指定され
           ているシェルを実行する。

       -H  -H (HOME) オプションが指定されると、環境変数 HOME が passwd(5) で指
           定された対象ユーザ (デフォルトでは root) のホームディレクトリに設定
           される。デフォルトでは、sudo は HOME を変更しない。

       -P  -P (preserve group vector) オプションが指定されると、 sudo はユーザ
           のグループリストを変更しない。デフォルトでは、sudo はグループリスト
           を対象ユーザが所属するグループのリストで初期化する。ただし実グルー
           プ ID と実効グループ ID は、対象ユーザにマッチするように設定される
           。

       -S  -S (stdin) オプションが指定されると、 sudo は端末デバイスではなく標
           準入力からパスワードを読む。

       --  -- オプションは、sudo がコマンドライン引き数の処理を終了することを
           示している。 -s オプションと一緒に使うと、とても便利である。

返り値
       プログラムが正常に実行されると、 sudo の返り値は単純に実行されたプログ
       ラムの返り値になる。

       設定やアクセス権の問題があった場合、もしくは、sudo が指定されたコマンド
       を実行できなかった場合、 sudo は終了値 1 で終了する。後者の場合は、エラ
       ー文字列が標準エラーに表示される。 sudo がユーザの PATH のエントリのど
       れかを stat(2) できない場合、エラーが標準エラーに表示される (ディレクト
       リが存在しない場合、またはエントリが実際のディレクトリでない場合は、エ
       ントリは無視され、エラーは表示されない)。これは通常の環境では起こらない
       。 stat(2) が "permission denied" を返す最も一般的な理由は、 auto-
       mounter を稼働させているときに、 PATH にあるディレクトリのどれかが現在
       アクセスできない計算機上にあるというケースである。

セキュリティ上の注意
       sudo は外部コマンドを実行する場合、安全であるように努める。動的ロードや
       動的バインドを制御する環境変数を使って、 sudo が実行するプログラムの安
       全性を下げようとすることができる。これに対抗するため、環境変数 LD_*,
       _RLD_*, SHLIB_PATH (HP-UX のみ), LIBPATH (AIX のみ) は、実行されるコマ
       ンドに渡される環境変数からは、いかなる場合も削除される。 \fBsudo\fR は
       、環境変数 IFS, ENV, BASH_ENV, KRB_CONF, KRBCONFDIR, KRBTKFILE,
       KRB5_CONFIG, LOCALDOMAIN, RES_OPTIONS, HOSTALIASES, NLSPATH,
       PATH_LOCALE, TERMINFO, TERMINFO_DIRS, TERMPATH も同様な脅威を引き起こす
       ので削除する。 TERMCAP にパス名が設定されている場合も無視される。さらに
       LC_*, LANGUAGE 変数に /, % 文字が含まれている場合も無視される。 sudo が
       SecurID をサポートするようにコンパイルされている場合、 VAR_ACE,
       USR_ACE, DLC_ACE 変数も削除される。 sudo が削除する環境変数のリストは、
       root で sudo -V を実行したときに表示される。

       コマンドスプーフィング (だましコマンド) を阻止するため、ユーザの PATH
       でコマンドを検索するときに、 sudo は (カレントディレクトリを意味する)
       "." と "" (のいずれかもしくは両方が PATH にあるかどうか) を最後にチェッ
       クする。しかし、実際の環境変数  PATH は修正されず、そのまま sudo が実行
       するプログラムに渡されることに注意すること。

       使用している OS が共有ライブラリをサポートしているのに、 setuid プログ
       ラムに対してユーザ定義のライブラリ検索パスを許している場合 (ほとんどは
       そうである)、セキュリティのため、これを許さないようにするリンカオプショ
       ンを使うか、 sudo を静的にリンクすべきである。

       sudo はタイムスタンプディレクトリ (デフォルトでは /var/run/sudo) の所有
       者をチェックし、所有者が root で、かつ root のみの書き込み属性でない場
       合、ディレクトリの中身を無視する。 root 以外のユーザでも chown(2) を使
       って自分のファイルを他人に渡せるようなシステムでは、タイムスタンプディ
       レクトリが全てのユーザに書き込み可能なディレクトリ (例えば、/tmp) であ
       る場合、ユーザが sudo の実行前にタイムスタンプディレクトリを作成できて
       しまう。しかし sudo はディレクトリと中身の所有者とアクセス権をチェック
       するので、受けるダメージとしては「隠し」ファイルをタイムスタンプディレ
       クトリに入れられるだけである。タイムスタンプディレクトリを root の所有
       にして、他のユーザからはアクセス不可能としてしまえば、そこにファイルを
       置いたユーザはファイルを取り出せなくなるので、こういったことは起こりづ
       らい。この問題を避けるには、全てのユーザからは書き込めないディレクトリ
       (例えば、/var/adm/sudo) をタイムスタンプディレクトリとして使うか、シス
       テムのスタートアップファイルで /var/run/sudo を適切な所有者 (root)とア
       クセス権 (0700) で作成すればよい。

       sudo は、遠い未来の時刻になっているタイムスタンプのセットを受け付けない
       。 current_time + 2 * TIMEOUT より先の時刻になっているタイムスタンプは
       無視され、sudo はログに記録を残して警告を出す。これにより、ユーザによる
       ファイル譲渡が可能なシステム上で、ユーザが偽の日付でタイムスタンプを作
       成するのを防ぐ。

       sudo は明示的に実行されたコマンドしかログに記録しない点に注意すること。
       ユーザが sudo su や sudo sh といったコマンドを実行した場合、シェルでそ
       れ以降に実行されたコマンドはログに記録されず、 sudo のアクセス制御も効
       かない。これはシェルエスケープを提供するコマンド (多くのエディタも含ま
       れる) でも同じである。そのため、sudo を介してユーザがコマンドへアクセス
       するのを許可する場合は、有効な root のシェルをそのコマンドでうっかり与
       えてしまわないように注意しなければならない。


       注意: 以下の例は、適切な sudoers(5) エントリがあることを仮定している。

       読み込み不可のディレクトリのファイルリストを取得する。

        % sudo ls /usr/local/protected

       ~yazza の存在するファイルシステムが root でエクスポートされていないマシ
       ン上で、ユーザ yazza のホームディレクトリの中身をリストする。

        % sudo -u yazza ls ~yazza

       ファイル index.html をユーザ www として編集する。

        % sudo -u www vi ~www/htdocs/index.html

       マシンをシャットダウンする。

        % sudo shutdown -r +15 "quick reboot"

       /home パーティションにあるディレクトリのディスク使用量リストを作成する
       。 cd とファイルリダイレクションが動作するように、サブシェルでコマンド
       を実行している点に注意すること。

        % sudo sh -c "cd /home ; du -s * │ sort -rn > USAGE"


環境変数
       sudo は、以下の環境変数を使用する。

        PATH                   SECURE_PATH が設定されていると
                               安全な値に設定される。
        SHELL                  -s オプションで実行するシェルを
                               決定するために使われる。
        USER                   対象となるユーザを設定する
                               (-u オプションで指定されない限り root)。
        HOME                   -s または -H オプション
                               (または、sudo に --enable-shell-sets-home
                               オプションが設定されていた) 場合に、
                               対象ユーザのホームディレクトリを設定する。
        SUDO_PROMPT            デフォルトのパスワードプロンプトとして使われる。
        SUDO_COMMAND           sudo の実行するコマンドに設定される。
        SUDO_USER              sudo を起動したユーザのログイン名に設定される。
        SUDO_UID               sudo を起動したユーザのユーザ ID に設定される。
        SUDO_GID               sudo を起動したユーザのグループ ID に設定される。
        SUDO_PS1               この変数が設定されている場合、
                               PS1 がこの変数の値に設定される。


ファイル
        /etc/sudoers           誰が何を可能であるかのリスト。
        /var/run/sudo          タイムスタンプの含まれるディレクトリ。


著者
       多くの人々が長年に渡り sudo の製作に携わってきた。このバージョンには、
       最初に

               Todd Miller
               Chris Jepeway

       によって書かれたコードが含まれている。 sudo の簡単な履歴については、
       sudo ディストリビューションの HISTORY ファイルを参照するか、
       http://www.sudo.ws/sudo/history.html を参照すること。

バグ
       sudo のバグを発見したと思った場合は、 http://www.sudo.ws/sudo/bugs/ 
       バグの報告を送って下さい。

放棄宣言
       Sudo is provided ‘‘AS IS’’ and any express or implied warranties,
       including, but not limited to, the implied warranties of
       merchantability and fitness for a particular purpose are disclaimed.
       See the LICENSE file distributed with sudo for complete details.

警告
       ユーザがシェルエスケープの可能なコマンドにアクセスできる場合、ユーザに
       root のシェルを入手させないための簡単な方法はない。

       ユーザに sudo  ALL の権限がある場合、そのユーザの設定に ’!’ 指定をして
       も、自分でプログラムを書けば root シェルを入手できてしまう。これを防ぐ
       簡単な方法はない。

       シェルスクリプトを sudo で実行すると、カーネルのバグを突いてしまい、 OS
       によっては setuid シェルスクリプトを危険なものにしてしまうかもしれない
       (使用している OS が /dev/fd/ ディレクトリをサポートしている場合、
       setuid シェルスクリプトは一般的に安全である)。

関連項目
       stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1),
       su(1).



3rd Berkeley Distribution            1.6.6                             sudo(8)


コメントする


[他の記事も読む]
<=新記事2009/04/30 サーバーリブート終了 & 本日の定期更新処理の遅れの報告
=>古記事2009/04/28 Blu-rayの20倍ホログラフィック/ 豚インフル/ 体罰 or Not裁判


大分類が「Linux」の記事
この論客の記事全て
RSS購読
RSS
ブログ表示スタイル
リスト/携帯(QRコード)
画像/動画/音声/リンク
表示開始年月
分類
全て
1.このサイトについて
2.作品DB開発/運用
3.ホームページ制作技術
4.Perl
5.C言語 / C++
6.検索エンジン&SEO
7.サッカー
8.自分のこと
9.Linux
10.旅行
11.思ったこと
12.パソコン
13.Berkeley DB
14.その他技術系
15.企画
16.スマートフォン
17.鑑賞
18.皆声.jpニュース
19.インターネット業界
20.運用マニュアル(自分用)
21.技術系以外実用書
22.料理
23.ALEXA
24.アニメ
25.会計
26.漫画
27.設計書
28.色々サイト作成
29.サーバー
30.自分専用
31.生活
32.OP/ED/PV
33.ゲーム
34.DB整備
35.新規開始作品紹介
36.英語圏の話題
37.大道芸
38.映画
39.PHP
40.ダイエット
41.Mac
42.JavaScript
43.MySQL
44.介護
45.作品DB作品追加作業
46.BI
47.Web API
48.パフォーマンス
49.インターネットの活用方法
50.Riak
51.Androidアプリ開発
52.Cassandra
53.スパム
54.写真
55.iOSアプリ開発
56.AWS
57.マーケティング
58.Web漫画
59.法律
60.mongodb
61.開発環境整備
62.Google Apps Script
63.meteor
64.Pentaho
65.Ansible
66.VPS
67.技術書メモ
68.Vagrant
69.Docker
70.dokuwiki
71.Apple Watch
72.Webサービス
73.セキュリティ
74.Elastic Search
75.Wordpress
76.クラウド
77.英語
78.MVNO
79.シンガポール
80.マレーシア
81.海外生活
日記の主な内容
サイト運営/開発
検索エンジン情報
・技術ネタ(Berkeley DB,
Linux, Perl, サイト作成)等

サイト管理
全まとめ
サーバー管理
定期処理状況
開発予定
削除提案
作品追加依頼
OP/ED追加依頼
OP/ED not found
作品提案承認欄

格言 fromスクライド
この世の理は即ち速さ
20年かければ馬鹿でも
傑作小説を書ける

助けられたら助け返す
それが俺のルール

強くなるには
一番弱い考えをする事だ
そしてその考えに反逆する




右側に何か入れてみるテスト


仕事でのサイト
介護DB
Helpyou
Doctor career
Nurse career
上へ ↑上へ 最速検索作品DB皆声