Tôi khá mới để bash scripting, nhưng nó cảm thấy như tôi thực sự thiếu một cái gì đó cơ bản ở đây. Tôi đang cố gắng để một phiên bản sửa đổi của chỉ Mike Perham's upstart sidekiq script trên một máy tính Ubuntu 14.04, tuy nhiên hầu như không có gì đang được đánh giá như mong đợi:Các tập lệnh khởi động hoặc bash có thay đổi trên Ubuntu 14.04 không? (Cố gắng để khởi động sidekiq với mới nổi)
- xuất khẩu dường như không được làm việc
- nguồn dường như không đánh giá biến PATH thay đổi của tôi trong .bashrc hoặc chạy lệnh rbenv init
- cd dường như không thay đổi thư mục, trừ khi $ (pwd) lệnh không phải là cách chính xác để đánh giá nó
Dưới đây là của tôi đã sửa đổi tập lệnh:
# /etc/init/sidekiq.conf - Sidekiq config
# This example config should work with Ubuntu 12.04+. It
# allows you to manage multiple Sidekiq instances with
# Upstart, Ubuntu's native service management tool.
# change to match your deployment user
setuid deploy
setgid deploy
stop on (stopping workers or runlevel [06])
respawn
respawn limit 3 30
instance $index
script
# this script runs in /bin/sh by default
# respawn as bash so we can source in rbenv
exec /bin/bash <<EOT
# use syslog for logging
# exec &> /dev/kmsg
# pull in system rbenv
export HOME=/home/deploy
echo "home is $HOME"
source /home/deploy/.bashrc
echo "path is $PATH"
cd /home/deploy/domain_freek/current
echo "user is $(whoami) and pwd is $(pwd) and rbenv is located at $(which rbenv)"
exec bundle exec sidekiq -i ${index} -e production
EOT
end script
Dưới đây là kết quả tôi nhận được trong file mới nổi log:
home is
path is /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
user is deploy and pwd is/and rbenv is located at
/bin/bash: line 12: exec: bundle: not found
Thử 'exec/bin/bash << 'EOT'' (dấu ngoặc cứng xung quanh điểm đánh dấu). Đầu ra sẽ có ý nghĩa hơn. – Mat
Được rồi! Cảm ơn, dấu ngoặc kép đã giúp. Bây giờ HOME được xuất và cd thực sự thay đổi thư mục ... Bây giờ tôi chỉ cần tìm ra cách tải đúng tệp .bashrc, hoặc khởi tạo rbenv theo cách khác – Josh