ステップ1.任意のエディターを使用してbindコマンドでスクリプトを作成します。例えば:
sudo emacs bind_user_directories.sh
内容:
#!/bin/bash
#NOTE: this file would be placed in /usr/local/sbin/ folder as bind_user_directories.sh
#alternatively it could be placed in /etc/init.d/ ... (I guess)
### BEGIN INIT INFO
# Provides: bind_user_directories
# Required-Start:
# Required-Stop:
# Should-Start: $named
# Default-Start: 0 2 3 4 5 6 (I guess...)
# Default-Stop: 1
# Short-Description: mount --bind for a user
# Description: runs mount --bind command for certain pre-defined directories for a specific user
### END INIT INFO
# What is this?
DESC="bind_user_directories"
# See how we were called.
case "$1" in
start)
log_progress_msg "bind directories for user..."
sudo mount --bind /source/path /target/path
log_progress_msg "done: bind directories for user"
;;
stop)
log_progress_msg "umount --bind directories for user..."
sudo umount /target/path
log_progress_msg "done: unbind directories for user"
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
#log_success_msg "Usage: bind_user_directories {start|stop|restart}"
log_success_msg "Usage: service bind_user_directories <start|stop|restart>"
exit 1
;;
esac
exit 0
ステップ2. bind_user_directories.shを保存して実行可能にします。
chmod a+x bind_user_directories.sh
ステップ3. / usr / local / sbinなどの適切な場所にリンクします。
sudo ln -s bind_user_directories.sh /usr/local/sbin/bind_user_directories.sh
ステップ4. upstartスクリプトを作成します。
sudo emacs /etc/init/bind_user_directories.conf
内容:
description "runs mount --bind command for certain pre-defined directories for a specific user"
start on filesystem and net-device-up IFACE!=lo
stop on runlevel [!023456]
console output
respawn
respawn limit 10 5
exec /usr/local/sbin/bind_user_directories.sh start
これで問題が解決する場合は、お知らせください。ログイン後、システムログでメッセージを確認できます(まだテストしておらず、このようなものを実装したことはありません)。ソリューションを改善した場合は、ここで最終的なソリューションを共有してください。ありがとう。
/etc/profile
か、~/.profile
これらのスクリプトで実行されるコードは、ユーザーのシェルで行われ、ユーザーが持ってしたくない場合は一方で、ユーザの制御の対象とされているため、root
それ自体でプログラムを実行する能力。これは、ユーザーのプロセスの外部にある実行中のサービスによって行われる必要があります。...実行するスクリプトの目的をお知らせいただければ助かります。