Cách chạy tập lệnh tự động khi khởi động hệ thống theo centos


8

Tôi đã cài đặt thành công TeamCity ib CentOS 6.2 Minimal. Tôi bị kẹt khi cố gắng chạy tập lệnh tự động khi khởi động hệ thống:

/opt/TeamCity/bin/teamcity-server.sh start

Tôi đã đi vòng quanh và thử nhiều phương pháp khác nhau mà tất cả đều thất bại. Hầu hết các phương thức trỏ đến việc thêm tập lệnh khởi động vào một trong các tệp RC.local:

/etc/rc.d/rc.local
/etc/rc.local

Và nội dung của RC.local chứa dòng:

/opt/TeamCity/bin/teamcity-server.sh start

Không ai trong số họ sẽ khởi động máy chủ teamcity

Không có vấn đề gì nếu tôi chạy tập lệnh bằng tay.

Có vẻ đơn giản nhưng làm thế nào để tôi có được một kịch bản shell để tự động chạy?


1
Bạn sẽ cần mô tả những gì bạn có nghĩa là 'không ai trong số đó hoạt động'. Bởi vì không có nó, mọi người đều đoán. Có thể mô tả chi tiết hơn những gì bạn đã làm và những thông báo hoặc sự kiện đầu ra hoặc thất bại xảy ra?
EightBitTony

đó là vị trí chính xác để đặt nó, vì vậy có vẻ như một cái gì đó không phải là chính xác hơn với mục /etc/rc.d/rc.local hoặc với chính tập lệnh. Bạn có thể đăng nội dung của tập lệnh & RC.local không? Ngoài ra, tập lệnh shell teamcity-server.sh có chạy khi bạn thực hiện thủ công không?
Quinn Murphy

Có, máy chủ teamcity chạy tốt bằng tay. Nhưng nó không thực tế để làm điều này mỗi khi máy chủ được khởi động lại ...
atp03

Bắt nó chạy thủ công nhưng không thông qua RC.local ngụ ý sự khác biệt về môi trường. ĐƯỜNG của bạn là gì? Bất kỳ biến env khác?
cjc

@cjc Không chắc ý của bạn là 'PATH' - Tuy nhiên nếu tôi chạy /etc/rc.d/rc.local theo cách thủ công thì máy chủ teamcity cũng có thể khởi động tốt. Điều này vẫn làm cho một sự khác biệt?
atp03

Câu trả lời:


15

Nếu tập lệnh bắt đầu teamcity là tập lệnh init tuân thủ LSB (nghĩa là, nếu nó cung cấp bắt đầu , dừng và các đối số khác ), bạn có thể chỉ cần sao chép tập lệnh vào /etc/init.dthư mục và chạy (với quyền root):

# chkconfig --add <script_name>
# chkconfig <script_name> on

Một liên kết tượng trưng cho tập tin cũng sẽ ổn. Vì vậy, hãy thử (như root):

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on

Nếu nó không bắt đầu khởi tạo, nhưng bắt đầu bằng tay mà không gặp vấn đề gì, bạn nên kiểm tra:

  1. quyền (có thể chương trình không thể chạy dưới quyền root. Hãy thử đăng nhập với quyền root và chạy nó), và;
  2. PATH của bạn (có thể kịch bản cần một cái gì đó nhưng nó không biết nó ở đâu).

Để in nội dung PATH của bạn, chỉ cần chạy:

echo $PATH

Để kiểm tra xem lý do khiến tập lệnh không bắt đầu là PATH, hãy thử:

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh

Lệnh này sẽ tạm thời xóa PATH của bạn và chạy lệnh. Nếu lệnh cần một số thông tin cụ thể về PATH thì nó sẽ thất bại (hãy cẩn thận để chạy chính xác như đã nêu ở trên, ĐÂY LÀ khoảng cách giữa PATH = và phần còn lại của lệnh).


6

trong lệnh Fedora 17

# chkconfig --add teamcity-server

nói: dịch vụ teamcity-server không hỗ trợ chkconfig, bạn nên thêm tiêu đề như:

#! /bin/bash
# chkconfig: - 10 90

Chỉ sau đó chạy lệnh đầu tiên.


2
Và hãy chắc chắn rằng tập lệnh của bạn được đặt ở /etc/init.d/:-)
Bart De Vos

2

Khi tập lệnh được chạy thủ công, nó hoạt động chính xác. Nhưng, khi chạy tự động, nó không hoạt động.

Tôi đã tìm ra thủ phạm: TeamCity chạy theo người dùng teamcity. Nó phải có trong /etc/sudoerstệp và bạn nên thêm, sử dụng visudomột dòng như thế này:

Defaults:teamcity !requiretty
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.