Tag: shell

如何优雅地停止java进程?

如何在Linux和Windows中优雅地停止Java进程? 什么时候Runtime.getRuntime().addShutdownHook被调用,什么时候没有? 终结者呢,他们在这里帮助吗? 我可以从shell发送某种信号给Java进程吗? 我正在寻找最好的便携式解决scheme。

如何为curl命令urlencode数据?

我正在尝试编写一个bash脚本进行testing,它需要一个参数并通过curl将其发送到网站。 我需要URL的编码值,以确保特殊字符处理正确。 什么是最好的方法来做到这一点? 到目前为止,这是我的基本脚本: #!/bin/bash host=${1:?'bad host'} value=$2 shift shift curl -v -d "param=${value}" http://${host}/somepath $@

将stdout的COPYredirect到bash脚本本身的日志文件

我知道如何将stdoutredirect到一个文件: exec > foo.log echo test 这将把“testing”放到foo.log文件中。 现在我想将输出redirect到日志文件并保持在标准输出 也就是说,可以从脚本之外轻松完成: script | tee foo.log 但我想从内部做到这一点 我试过了 exec | tee foo.log 但它没有工作

指定在使用或不使用Ruby的情况下执行shell命令时使用的私有SSH密钥?

也许是一个相当不寻常的情况,但我想指定一个私人的SSH密钥来执行从本地计算机的shell(git)命令。 基本上是这样的: git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser" 甚至更好(在Ruby中): with_key("/home/christoffer/ssh_keys/theuser") do sh("git clone git@github.com:TheUser/TheProject.git") end 我已经看到使用Net :: SSH连接到远程服务器的示例,它使用指定的私钥,但是这是本地命令。 可能吗?

正确的Bash和shell脚本可变大小写

我运行了很多带有variables的shell脚本,而且我一直认为这是一个严重的误解。 我的理解是,按照惯例(也许很久以前也是如此), 环境variables是全面的。 但是在像Bash这样的现代脚本环境中,我总是倾向于使用临时variables的小写名称的惯例,而对于导出的variables(即环境variables)我们总是使用大写的名称。 例如: #!/usr/bin/env bash year=`date +%Y` echo "It is $year." export JAVA_HOME="$HOME/java" 这一直是我的事情。 是否有权威的消息来源同意或不同意这种方式,还是纯粹是一种风格?

如何使用Bash脚本的密码运行sftp命令?

我需要从Linux主机使用sftp将日志文件传输到远程主机。 我已经从我的操作组提供了相同的凭据。 但是,由于我不能控制其他主机,所以无法与其他主机生成和共享RSA密钥。 那么是否有办法通过cron作业从Bash脚本内部运行sftp命令(提供用户名/密码)? 我发现了一个类似的Stack Overflow问题, 在Bash脚本中指定了sftp的密码 ,但是没有令人满意的答案来解决我的问题。

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]

如何将命令输出作为多个parameter passing给另一个命令

我想把一个命令的每个输出作为多个parameter passing给另一个命令,例如: grep "pattern" input 收益: file1 file2 file3 我想复制这些输出,例如: cp file1 file1.bac cp file2 file2.bac cp file3 file3.bac 我怎样才能一次做到这一点? 就像是: grep "pattern" input | cp $1 $1.bac

如何在bash中声明二维数组

我想知道如何在bash中声明一个二维数组,然后初始化为0。 在C中看起来像这样: int a[4][5] = {0}; 我怎么给一个元素赋值? 如在C: a[2][3] = 3;

使用Bash将绝对path转换为给定当前目录的相对path

例: absolute="/foo/bar" current="/foo/baz/foo" # Magic relative="../../bar" 如何创build魔术(希望不要太复杂的代码…)?