簡體   English   中英

在Linux中以其他用戶選項運行

[英]Run as Other user Option in Linux

案件 :

我的案子很簡單。 我有一台Linux服務器計算機。 在該服務器上,有2個用戶。 一個是root ,另一個是oracle 現在這件事了,root用戶不知道sqlldr命令,該命令僅由oracle用戶識別。

我有一個batch.sh文件,在該文件中,我有一個sqlldr命令,它將在數據庫中插入記錄。 當我使用oracle用戶打開終端時,該batch.sh文件將根據預期運行。 但是,當我使用root用戶從終端運行該批處理文件時,它說“ ./batch.sh:第3行:sqlldr:找不到命令 ”。

問題:

現在的問題是,我正在從Java代碼中調用此batch.sh文件,並且此Java進程以root身份啟動。 我沒有辦法將此Java進程切換為oracle。 但是,我期望的是,在使用root用戶執行batch.sh文件中的命令之前,我可能會切換用戶。

這是我的batch.sh文件內容。

#!/bin/bash

sqlldr username/password@sid control='/path/toFile/control.txt' log='/path/toFile/Results.log' bad='/path/toFile/BadFile.bad' ERRORS=5000

exit 0

我期待這樣的事情。

#!/bin/bash

### Start - Switch user here from root to oracle so that it recognize the following command

sqlldr username/password@sid control='/path/toFile/control.txt' log='/path/toFile/Results.log' bad='/path/toFile/BadFile.bad' ERRORS=5000

### End - Undo the switch that we made above

exit 0

任何幫助將不勝感激。

謝謝

可執行文件sqlldr根本不在根目錄的搜索PATH中。 因此,當您以root用戶身份登錄時,將無法執行sqlldr。

您需要做的是找出sqlldr的位置(例如/ folderof / yourtool),然后執行A或B:A)確保使用根方法,將其包含在root登錄時加載的根路徑中。您的Linux發行版或B)將PATH=$PATH:/folderof/yourtool行添加到Shell腳本或Java環境中以動態添加PATH。

您還可以使用runuserroot用戶身份在腳本中以該用戶身份運行命令:

runuser -l oracle -c "sqlldr username/password@sid control='/path/toFile/control.txt' log='/path/toFile/Results.log' bad='/path/toFile/BadFile.bad' ERRORS=5000"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM