运行 作为 Linux 中的其他用户选项
Run as Other user Option in Linux
案例:
我的情况很简单。我有一台 Linux 服务器机器。在该服务器上,有 2 个用户。一个是root,一个是oracle。现在问题来了,root 用户不知道 sqlldr 命令,这个命令被 [=32= 识别]oracle 仅限用户。
我有一个 batch.sh 文件,在那个文件中我有一个 sqlldr 命令将在数据库中插入记录。当我使用 oracle 用户打开终端时,那个 batch.sh 文件 运行s 根据预期。但是当我使用 root 用户从终端 运行 那个批处理文件时,它说“./batch.sh:第 3 行:sqlldr:找不到命令”。
问题:
现在的问题是,我从 java 代码调用这个 batch.sh 文件,这个 java 进程以 root 启动。我没有办法将这个 java 进程切换到 oracle。但是我期望的是,我可以在使用 batch.sh 文件中执行命令之前切换用户]root 用户.
这是我的 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 根本不在根目录的搜索路径中。所以,当你以 root 身份登录时,你将无法执行 sqlldr。
您需要做的是找出 sqlldr 所在的位置(例如 /folderof/yourtool)并执行 A 或 B:
A) 确保你将它包含在root登录时加载的根路径中,使用根据你的linux分布的方法
要么
B) 将行 PATH=$PATH:/folderof/yourtool
添加到 shell 脚本或 java 环境以动态添加 PATH。
您还可以在脚本中使用 root 运行 命令作为该用户 runuser:
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"
案例:
我的情况很简单。我有一台 Linux 服务器机器。在该服务器上,有 2 个用户。一个是root,一个是oracle。现在问题来了,root 用户不知道 sqlldr 命令,这个命令被 [=32= 识别]oracle 仅限用户。
我有一个 batch.sh 文件,在那个文件中我有一个 sqlldr 命令将在数据库中插入记录。当我使用 oracle 用户打开终端时,那个 batch.sh 文件 运行s 根据预期。但是当我使用 root 用户从终端 运行 那个批处理文件时,它说“./batch.sh:第 3 行:sqlldr:找不到命令”。
问题:
现在的问题是,我从 java 代码调用这个 batch.sh 文件,这个 java 进程以 root 启动。我没有办法将这个 java 进程切换到 oracle。但是我期望的是,我可以在使用 batch.sh 文件中执行命令之前切换用户]root 用户.
这是我的 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 根本不在根目录的搜索路径中。所以,当你以 root 身份登录时,你将无法执行 sqlldr。
您需要做的是找出 sqlldr 所在的位置(例如 /folderof/yourtool)并执行 A 或 B:
A) 确保你将它包含在root登录时加载的根路径中,使用根据你的linux分布的方法
要么
B) 将行 PATH=$PATH:/folderof/yourtool
添加到 shell 脚本或 java 环境以动态添加 PATH。
您还可以在脚本中使用 root 运行 命令作为该用户 runuser:
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"