您好,登錄后才能下訂單哦!
這篇“Linux service無法使用系統(tǒng)環(huán)境變量問題如何解決”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux service無法使用系統(tǒng)環(huán)境變量問題如何解決”文章吧。
之前在做一個mysql多實例安裝時,安裝成功,linux也能成功啟動;但是將support-files/mysqld_multi.server移動到/etc/init.d/目錄下并設(shè)置開機(jī)啟動(chkconfig xxx on)失??;
發(fā)現(xiàn)了問題,開始解決,發(fā)現(xiàn)service xxx start 無法啟動mysql的多實例,但是mysqld_multi start就可以使用;然后經(jīng)過各種嘗試,發(fā)現(xiàn)在普通環(huán)境下可以打印出/etc/profile設(shè)置的mysql環(huán)境變量,但是在shell做成的service中無法打印該mysql環(huán)境變量;
我的/etc/frofile文件:
export PATH=/usr/local/mysql/bin:$PATH
執(zhí)行:可以看到是有設(shè)置的mysql環(huán)境變量的
[root@localhost init.d]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
然后我們定義一個system V的腳本
[root@localhost init.d]# vi /etc/init.d/mysqlmul #!/bin/bash #chkconfig: - 75 15 #description: test
賦予權(quán)限并設(shè)置為service
[root@localhost init.d]#chmod +x /etc/init.d/mysqlmul [root@localhost init.d]#chkconfig --add mysqlmul
執(zhí)行service:結(jié)果可以看到是沒有mysql環(huán)境變量的
[root@localhost init.d]# service mysqlmul start /sbin:/usr/sbin:/bin:/usr/bin
1、在/etc/init.d/xxx剛才設(shè)置的service中添加export PATH=/usr/local/mysql/bin:$PATH
注意:
當(dāng)把一個shell腳本放入到service中時,需要設(shè)定好PATH等環(huán)境。
c++測試程序
LogTest.cpp內(nèi)容如下:
// 測試代碼 #include <stdio.h> #include <iostream> using namespace std; int main(int argc, const char* argv[]) { int size = 0; // 解析傳入?yún)?shù)(argc和argv),代碼略 // ... cout << size <<endl; while(1); return 0; }
service文件
LogTest.service文件
[Unit] Description=LogTest After=network.target [Service] Type=simple EnvironmentFile=-/etc/sysconfig/LogTest ExecStart=/usr/local/MyTest/LogTest -s ${TESTSIZE} ExecStop=/bin/kill -s QUIT $MAINPID StandardOutput=syslog StandardError=syslog SyslogIdentifier=LogTest [Install] WantedBy=multi-user.target
環(huán)境變量文件
環(huán)境變量文件LogTest放在/etc/sysconfig/目錄下。
# 環(huán)境變量文件,可根據(jù)需要新增 TESTSIZE=10
1)編譯c++測試程序,并將測試程序拷貝至/usr/local/MyTest/目錄下。
cp LogTest /usr/local/MyTest/
2)日志配置
關(guān)于日志相關(guān)配置,可查看https://blog.csdn.net/www_dong/article/details/128053496。
3)service文件加載
# 文件拷貝 cp LogTest.service /usr/lib/systemd/system # 文件加載 systemctl daemon-reload # 程序啟動 systemctl start LogTest # 查看進(jìn)程是否啟動成功 ps -aux | grep LogTest
4)查看LogTest程序日志
# 進(jìn)入日志所在目錄 cd /var/log # 查看LogTest.log cat LogTest.log
說明: 日志打印出10,說明整個流程成功
以上就是關(guān)于“Linux service無法使用系統(tǒng)環(huán)境變量問題如何解決”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。