国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java在linux系統下開機啟動無法使用sudo命令的原因及解決辦法

2019-11-26 16:00:03
字體:
來源:轉載
供稿:網友

操作系統:centos 5.2
場景描述:
我們有一個WEB工程,客戶要求使用普通用戶(例如chb)運行,然后在頁面上有個按鈕,點擊之后可以關機

實現方式:
1. JAVA代碼:

復制代碼 代碼如下:

        public static boolean shutDownForLinux() {
                try {
                        Runtime.getRuntime().exec("sudo /sbin/poweroff");
                } catch (IOException e) {
                        return false;
                }
                return true;
        }

2. 修改/etc/sudoers,在末尾增加如下信息:
chb ALL=NOPASSWD:/sbin/reboot,/sbin/poweroff

3.設置開機自動啟動tomcat,修改/etc/rc.d/rc.local,在末尾增加如下:
su chb -c "/opt/tomcat/bin/startup.sh"

問題描述:
每次開機自動啟動的java進程,頁面上的關機按鈕都無法實現關機功能,但是此時如果以chb賬號通過ssh登錄該服務器,手動殺掉tomcat進程,然后再重新啟動tomcat,頁面上的關機按鈕就有效了。各位知道這是為什么嗎?是否和sudo加載順序有關?或者和chb用戶shell環境有關?

問題分析:
通過分析開機啟動的JAVA進程和手動啟動的JAVA進程,發現tty是不同的,接著再去google sudo和tty的關系,發現sudo默認是需要tty的,系統開機啟動,沒有tty,而我們通過ssh客戶端登錄服務器,殺掉tomcat,再重新啟動tomcat,這時候可以獲得tty為pts,因此可以使用sudo命令

解決方法:
通過修改/etc/sudoers文件,將
     Defaults requiretty
注釋掉即可

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐池县| 佳木斯市| 安岳县| 延长县| 宁远县| 凭祥市| 连山| 抚松县| 拜泉县| 乐昌市| 遵义县| 宜川县| 丹寨县| 阳朔县| 封开县| 浏阳市| 达孜县| 金川县| 高淳县| 那曲县| 鹤岗市| 沁阳市| 怀柔区| 五莲县| 沧源| 岳西县| 贵州省| 太和县| 扎赉特旗| 乌鲁木齐县| 晋宁县| 东安县| 恩施市| 四川省| 泸西县| 自治县| 津市市| 兴和县| 青神县| 榆林市| 东光县|