首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ProcessBuilder输出到文件的Bash命令不起作用

可能是由于以下几个原因:

  1. 命令错误:首先需要确保你执行的Bash命令是正确的。可以通过在终端手动执行该命令来验证其是否正常工作。确保命令语法正确,并且所需的参数和选项都正确设置。
  2. 环境问题:ProcessBuilder在执行命令时使用的是Java虚拟机的环境。因此,如果你的Bash命令依赖于特定的环境变量或路径设置,你需要确保这些环境变量在Java进程中可用。你可以使用ProcessBuilder的environment()方法来设置环境变量。
  3. 文件路径问题:如果你的Bash命令涉及到文件的读写操作,你需要确保文件路径是正确的,并且Java进程有足够的权限来读写该文件。你可以使用绝对路径或相对路径来指定文件路径。
  4. 输入输出流处理问题:在使用ProcessBuilder执行命令时,你需要正确处理命令的输入和输出流。你可以使用ProcessBuilder的redirectInput()和redirectOutput()方法来重定向输入和输出流。确保你正确地处理了命令的输出,并将其写入到文件中。

综上所述,如果使用ProcessBuilder输出到文件的Bash命令不起作用,你可以检查命令的正确性、环境变量的设置、文件路径的正确性以及输入输出流的处理。如果问题仍然存在,可能需要进一步调试和排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ProcessBuilder API 使用教程

ProcessBuilder 介绍 Java Process API 为开发者提供了执行操作系统命令强大功能,但是某些 API 方法可能让你有些疑惑,没关系,这篇文章将详细介绍如何使用 ProcessBuilder...工作目录 使用 directory 方法可以修改子进程默认工作目录,下面的示例中修改进程工作目录为 process 文件夹。...日志输出常见方式是输出到指定日志文件ProcessBuilder 对此也有很好支持。 输出到文件 使用 redirectOutput 可以指定日志输出文件,这个方法会自动创建日志文件。...下面的例子在指定目录下执行 ls-l 命令列出目录下所有文件。...); 运行输出: /bin/bash: xxx: command not found 输出到当前进程 在这个示例中,将看到 inheritIO() 方法作用。

51121

mysql——通过命令将sql查询结果导出到具体文件

https://blog.csdn.net/u013045437/article/details/81275960 引言 最近在修改线上数据时候,需要现将修改数据继续备份,但是线上客户服务器是不能直接连接...,而是通过了一台堡垒机,这就说我们不能通过可视化客户端直接连接mysql,所以所有的操作都是需要通过sql语句,下面看一下导出sql: mysql> select count(1) from table...into outfile '/tmp/test.xls'; 直接在我们查询结果后面增加 into outfile '路径即可',但是在开始时候我后面添加路径不是 /tmp 而是/data 这样执行以后抛出下面的错误...导出数据必须是这个值指定路径才可以导出,默认有可能是NULL就代表禁止导出,所以需要设置一下; 我们需要在/etc/mysql/mysql.conf.d/mysqld.cnf 文件末尾进行设置,在末尾添加一句...secure_file_priv="/"即可将数据导出到任意目录; secure_file_priv   1、限制mysqld 不允许导入 | 导出     secure_file_prive=null

1.8K10
  • • • ​​​​ 目录​ • shell命令概述 • 获得命令帮助 • Linux命令格式 • 文件和目录管理 • Bash命令历史 • Bash命令别名 • 重定向 • vim文本编辑器

    n:执行历史记录中第n条命令 Bash命令别名 命令别名 为使用频率较高复杂命令行设置简短调用名称 查看命令别名 格式:alias [别名] 设置命令别名 执行:alias...别名='实际执行命令' 取消已设置命令别名 格式:unalias 别名 unalias -a 重定向 将命令执行结果输出到指定文件中,而不是直接显示在屏幕上...别名='实际执行命令' 取消已设置命令别名 格式:unalias 别名 unalias -a 重定向 将命令执行结果输出到指定文件中,而不是直接显示在屏幕上...别名='实际执行命令' 取消已设置命令别名 格式:unalias 别名 unalias -a 重定向 将命令执行结果输出到指定文件中,而不是直接显示在屏幕上...别名='实际执行命令' 取消已设置命令别名 格式:unalias 别名 unalias -a 重定向 将命令执行结果输出到指定文件中,而不是直接显示在屏幕上

    1.3K40

    使用lsof命令恢复已删除文件(正在使用文件

    此方法适用于正在使用文件 ,且被删除后,可以通过lsof方式进行恢复。...master ~]# rm -rf /var/log/messages [root@master ~]# cat /var/log/messages cat: /var/log/messages: 没有那个文件或目录...这个时候不要慌,第一个终端less还是可以正常浏览文件 准备进行恢复文件 如果提示没有lsof命令就安装 yum -y install lsof [root@master ~]# lsof |...less正在占用这个文件但是已经被删除了 记住这两个数字:第一个红框代表是PID 第二个红框记住这个数字就行了 不需要字母 [root@master ~]# cat /proc/10295/...fd/4 你会神奇发现着就是你刚刚删除文件 直接复制一份还原回去 [root@master ~]# cp /proc/10295/fd/4 /var/log/messages [root@master

    1.8K20

    Shell 命令行 从日志文件中根据将符合内容日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内日志输出到另一个文件,利用循环实现了我想要实现内容。...但是用这个脚本同事很郁闷,因为执行时间比较长,越大文件越长。于是找我,问我能不能实现一个更快方案。 我想了一下,觉得之前设计是脱裤子放屁,明明有更加简单实现方法。...想办法获得我要截取内容开始行号,然后再想办法获得我想截取文件结尾行号,然后用两个行号来进行截断文件并输出。就可以实现这个效果了。.../bin/bash # 设定变量 log=3.log s='2017-08-01T01:3' e='2017-08-01T01:4' # 根据条件获得开始和结束行号 sl=`cat -n $log...^[ \t]*//g' | cut -f1` el=`cat -n $log | grep $e | tail -1 | sed 's/^[ \t]*//g' | cut -f1` # 获取结果并输出到

    2.6K70

    ​复现CVE-2020-14883(说几个坑)

    复现过程中遇到坑: 1、如果使用python命令开启: python -m SimpleHTTPServer 有可能会导致访问此目录时候是呈现出下载此文件 正确调用需要放在web目录下,能够进行访问形式...> 在多次删除、替换等操作下,发现可以使用本地调用方式来解决: 就是下载该文件:http://www.springframework.org/schema/beans/spring-beans.xsd...然后在本地搭建web下,去加载这个文件,具体代码如下: <?...然后再使用payload就可以反弹shell了 同事又严谨提出一定要用10.3.6版本来进行尝试 就开了一台10.3.6靶机来进行利用 再断网情况下复现成功了 ? ?...访问URL即可使用com.tangosol.coherence.mvel2.sh.ShellSession执行命令: http://192.168.1.1:7001/console/css/%252e%

    1K30

    使用SSH连接远程主机并执行多个Bash命令最优雅方法是什么

    问题 我已经设置好了ssh代理,我可以用Bash脚本在外部服务器上运行命令,执行以下操作: ssh blah_server "ls; pwd;" 现在,我真正想做是在外部服务器上运行许多长命令。...将所有这些命令都放在引号之间看起来会很不美观,而且我确实不想为了避开这个问题而多次使用SSH连接。 那么,有没有一种方法可以让我一次性完成这个操作,比如用括号或其他方式来包含所有的命令?...我在寻找类似这样方法: ssh blah_server ( ls some_folder; ....回答 使用 Here-Document: ssh user@remote_host << EOF 命令1 命令2 命令3 EOF 不过这样执行会有一个问题: 输出信息开头都有一句提示 "Pseudo-terminal...如果要避免这个提示信息,可以将上述命令第一行改为 ssh user@remote_host /usr/bin/bash << EOF 朋友们可以拿手上测试环境试一试。

    13210

    使用uniq命令去除文件重复行

    uniq命令全称是“unique”,中文释义是“独特,唯一”。该命令作用是用来去除文本文件中连续重复行,中间不能夹杂其他文本行。去除了重复,保留都是唯一,也就是独特,唯一了。...我们应当注意是,它和sort区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件重复行。...语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现次数 -d 只显示有重复纪录,每个重复纪录只出现一次 -u 只显示没有重复纪录 参考实例 删除连续文件中连续重复行...95 Linux 85 Linux 85 [root@linuxcool ~]# uniq testfile test 30 Hello 95 Linux 85 打印每行在文件中出现重复次数...,且每个纪录只出现一次: [root@linuxcool ~]# uniq -d testfile test 30 Hello 95 Linux 85 只显示没有重复纪录: [root

    2.1K00

    Process类详解

    ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类一个实例,该实例可用来控制进程状态并获得相关信息...每个进程生成器ProcessBuilder对象管理这些进程属性: 命令 是一个字符串列表,它表示要调用可执行外部程序文件及其参数(如果有)。 环境 是从变量 到值 依赖于系统映射。...Runtime.exec() 可接受一个单独字符串,这个字符串是通过空格来分隔可执行命令程序和参数;也可以接受字符串数组参数/list。...() 给出命令和参数。...(); } 注意 ProcessBuilder 第一个参数必须是可执行程序,可以添加参数使用{"cmd", "/c"} 或 {"/bin/bash", "-c"}。

    1.6K20

    (18)Bash输入输出重定向

    下面我们来看一下什么是输出重定向 从字面意义上我们可以这样理解:输出本来是当我进行命令后,输出到屏幕上,现在我不让他输出到屏幕,改变他输出方向,把他输出到文件当中,就叫输出重定向。...2.输出重定向 类型符号作用标准输出重定向 命令 > 文件以覆盖方式,把命令正确输出输出到指定文件或设备当中。命令 >> 文件以追加方式,把命令 正确输出输出到指定文件或设备当中。...标准错误输出重定向 错误命令 2> 文件以覆盖方式,把命令 错误输出输出到指定文件或设备当中。错误命令 2>> 文件以追加方式,把命令错误输出输出到指定文件或设备当中。...#如果用输出重定向,错误结果是保存不了 [root@192 lhh98330]#lst >> newfile bash: lst: 未找到命令......3.正确输出和错误输出同时保存 正确输出和错误输出同时保存 命令 > 文件 2>&1以覆盖方式,把正确 出和错误输出都保存到同 一个文件当中。

    1.1K20

    使用sed命令批量处理Makefile文件脚本

    前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件通用Makefile》,里面的Makefile代码有个不好地方需要修改。...当编译.cpp文件时,使用STD_OPT变量仍然是编译.c文件参数-std=c99,这个在C++中是不支持。...1 sed命令简要说明 由于sed命令可用参数太多了,这里只列举脚本中用到几个参数: 1 2 3 sed -i:直接修改文件而不是将处理结果在屏幕上输出; sed -e:多个操作action按顺序执行.../bin/bash # FileName: handle_makefile.sh # Description: Simple usage of sed command to modify...#echo "" | awk '{fflush()}' fi done 3 脚本执行结果 如上图所示,脚本不断遍历src目录下Makefile文件,然后进行处理。

    20510

    Java程序员日常 —— 多进程开发IO阻塞问题

    本篇仍旧是源于最近工作,总结一下纪念那些年埋下坑... 背景故事 需求:“使用进程方式启动另一个程序!” 开发:“OK!...解决方案1:使用缓冲区缓存消息 这个可以参考CSDN帖子 解决方案2:使用ProcessBuilder合并标准输出和错误 仍然源自于上面的博客: try{ String[] cmds = {"...每个builder管理着下面的进程属性: cmmand 命令,比如{“ipcofig”,"/all"} environment 环境变量,子进程会直接使用当前进程环境变量。...线程安全 注意这个类不是线程安全,因此如果多个线程使用ProcessBuilder实例,并且修改属性,那么可能会造成冲突。因此需要在外面进行线程同步。...样例中修改了工作目录以及环境变量,并且把标准错误和标准输出合并输出到日志文件中: ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1

    1.4K50

    HDFS高级命令使用——文件限额配置(4)

    相信看过小菌之前博客《HDFSshell常用命令大全》小伙伴们,肯定对于HDFSshell常用命令已经不满足了,那么这篇博客,小菌为大家带来是HDFS高级命令使用——文件限额配置...首先让我们来看看这个命令作用吧~ hdfs文件限额配置允许我们以文件大小或者文件个数来限制某个目录下上传文件数量或者文件内容总量,以便达到我们类似百度网盘网盘等限制每个用户允许上传最大文件量...我们可以从上述知道HDFS限额配置可以从文件数量限额和空间大小限额两个方面来进行约束,那具体命令又该如何使用呢?...,上传文件,发现只能上传一个文件 hdfs dfsadmin -clrQuota /user/root/lisi # 清空文件数量限制 空间大小限额 hdfs dfsadmin -setSpaceQuota...#上传超过4Kb文件大小上去提示文件超过限额 hdfs dfsadmin -clrSpaceQuota /user/root/lisi #清除空间限额 hdfs dfs -put /export

    62410

    linux文件权限设置及使用命令

    1、文件类型共七种: d 目录 l 符号链接(软硬连接) s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 - 普通文件,或者更准确说,不属于以上几种类型文件...;guid(权限数字2)意味着执行相应脚本用户将具有该文件所属用户组中用户权限。...修改文件所属: 语法: chown -R -h owner file -R意味着对所有子目录下文件做同样修改; -h意味着在改变符号链接文件属主时不影响该链接所指向目标文件。...root 创建文件默认权限: umask命令确定创建文件缺省权限,一般umask在/etc/profile文件中设置,每个用户登录时会引用该文件,如果设置umask,那么可以在$HOME下.profile...或者bash_profile文件中保存。

    2.7K00

    【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件结构体数据 )

    文章目录 一、学生管理系统 二、代码示例 一、学生管理系统 ---- 前两篇博客 【C 语言】文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) 【...C 语言】文件操作 ( 读取文件结构体数组 | feof 函数使用注意事项 ) 中 , 将结构体 ( 数组 ) 数据写入到了文件中 , 然后又从文件中读取 结构体 ( 数组 ) 并打印出来 ; 之前写入..., 读取 结构体 ( 数组 ) 个数都是固定 , 本篇博客实现从命令行接收结构体数据 , 然后保存到文件中 ; 做一个简单学生管理系统 , 手动将学生数据录入到文件中 ; scanf 函数原型...; 使用结构体成员接收上述变量 , 然后写出到文件中 , 就实现了从命令行接收数据 , 写出到文件中 ; 二、代码示例 ---- #include /* 定义结构体, 存储一个字符串和年龄...// 命令行阻塞等待用户输入学生年龄 scanf("%d", &s1.age); // 将结构体写出到文件中 fwrite(&s1, 1, sizeof

    66610
    领券