小编She*_*jie的帖子

避免在 shell 脚本中使用交互模式

有一个交互式 shell 控制台,我可以进入它,在控制台内运行特定的命令集并从中退出。

现在我想编写一个 bash 脚本,它连接到交互式 shell 控制台并以静默方式运行我的命令,最后退出而不进行任何交互。这意味着我希望一切以非交互方式自动化。我有什么想法可以实现这一目标吗?

我正在尝试类似的东西,比如说,blabla shell 是这里的交互式控制台,它总是带我进入交互模式:(

/usr/bin/blabla shell << EOF 
do A,
do B,
do C
quit
EOF
Run Code Online (Sandbox Code Playgroud)

我可以在这里找到这个问题的长/特定版本 -> 在 shell/bash 脚本中配置 Flume - 避免交互式 Flume shell 控制台

shell scripting

5
推荐指数
1
解决办法
4812
查看次数

模拟+ easymock-NoClassDefFoundError:net / sf / cglib / proxy / Enhancer

我正在使用easymock + powermock编写测试,因此使用powermock的原因是模拟静态方法。

我的测试课看起来像:

import static org.powermock.api.easymock.PowerMock.mockStatic;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticTest.class)
public class DummyTest {
    @Test
    public void testDummy() {
        mockStatic(StaticTest.class);
        Mockito.when(StaticTest.testMethod()).thenReturn("hello world");
        ........
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试依赖项和版本:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-easymock</artifactId>
        <version>1.4.12</version>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

运行测试,我得到了初始化错误,如下所示:

java.lang.NoClassDefFoundError: net/sf/cglib/proxy/Enhancer
at org.powermock.api.extension.proxyframework.ProxyFrameworkImpl.isProxy(ProxyFrameworkImpl.java:29)
at org.powermock.reflect.internal.WhiteboxImpl.getUnmockedType(WhiteboxImpl.java:1783)
at org.powermock.reflect.internal.WhiteboxImpl.getType(WhiteboxImpl.java:2237)
at org.powermock.reflect.internal.WhiteboxImpl.setInternalState(WhiteboxImpl.java:327)
at org.powermock.reflect.proxyframework.RegisterProxyFramework.registerProxyFramework(RegisterProxyFramework.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud)

java junit noclassdeffounderror mockito powermock

5
推荐指数
1
解决办法
1万
查看次数

puppet chown/chmod对批处理目录下的文件

在puppet中,您可以通过执行以下操作来chown/chmod单个文件:

file {
    '/var/log/mylog/test.log':
    ensure  => 'present',
    mode    => '0644',
    owner    => 'me';
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. ensure =>'present'将确保'/var/log/mylog/test.log'存在,如果它不存在则创建它.如果文件存在,我有什么方法可以让它做动作,如果文件不存在,不打扰创建/删除它,只是忽略它并继续.

  2. 假设我在/ var/log/mylog /下面有3个文件,我想在一个批处理中对它们chown/chmod,而不是在我的puppet代码中有3个文件资源部分.我可以做下面这样的事情(因为下面的代码不存在,现在是我的梦想^ _ ^):

    files {
        '/var/log/mylog/*.log':
        ensure  => 'present',
        mode    => '0644',
        owner    => 'me';
    }
    
    Run Code Online (Sandbox Code Playgroud)

puppet

4
推荐指数
1
解决办法
1万
查看次数

Hbase memstore手动刷新

根据Hbase设计,Hbase使用memstore存储写入,最终当memstore达到大小限制时,它会将其刷新到HDFS.这个冲洗练习是在主题背后自动发生的.

在我的情况下,我想进行hdfs迁移,从一个集群迁移到另一个集群,我需要确保在我在源集群中关闭hbase进程之前没有任何内存留在内存中.无论如何我们可以手动强制刷新即使memstore没有达到限制.

==问题添加==

进一步的问题:你怎么知道冲洗完成了?通过指标?

hadoop hbase hdfs

4
推荐指数
1
解决办法
4110
查看次数

pip install - 通过对等方重置连接

当我尝试使用pip安装lxml时,我遇到异常"Connection by peer":

Downloading/unpacking lxml
  Downloading lxml-3.0.1.tar.gz (3.2Mb): 643Kb downloaded
Exception:
Traceback (most recent call last):
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 104, in main
    status = self.run(options, args)
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/install.py", line 245, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py", line 985, in prepare_files
    self.unpack_url(url, location, self.is_download)
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py", line 1109, in unpack_url
    retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py", line 451, in unpack_http_url
    download_hash = _download_url(resp, link, temp_location)
  File "/home/dummyuser/work/virt-dev-env/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py", line 368, in _download_url
    chunk = resp.read(4096)
  File "/usr/lib/python2.7/socket.py", line 380, …
Run Code Online (Sandbox Code Playgroud)

python pip virtualenv

4
推荐指数
2
解决办法
8804
查看次数

thrift hbase客户端 - 支持过滤器和协处理器

可悲的是,我的hbase客户端语言是Python,我现在使用的是happybase,它基于thrift AFAIK.我知道到目前为止,节俭仍然不支持过滤器,协处理器(如果我错了,请纠正我).有人可以指出我可以跟踪计划/进度的任何Jira项目吗?我能找到的唯一一个来自"Hbase in Action":

第一个似乎没有覆盖过滤器,第二个没有更新很长一段时间.

python hbase thrift

4
推荐指数
1
解决办法
2101
查看次数

NiFi如何在内存或磁盘中存储流量数据

有人可以详细解释当下一个处理器无法接收或处理任何数据时,像GetFile或QueryDatabaseTable这样的NiFi处理器如何存储行?数据是否会在内存中传输,然后在大小超过某个阈值时交换到磁盘?它可能会有内存不足或数据丢失的风险吗?

storage persistence apache-nifi

4
推荐指数
1
解决办法
2227
查看次数

使用外部属性文件执行jar

我有一个带有main类的jar,它可以执行如下:java -jar test.jar

在罐子里面,我有类似的东西

public static void main(String[] args) throws IOException {
    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("config.properties");
    Properties prop = new Properties();
    prop.load(is);
    //then I wanna fetch all the properties in the config.properties file
}
Run Code Online (Sandbox Code Playgroud)

我同时运行:

  1. java -jar test.jar

  2. java -jar test.jar -cp/tmp(其中config.properties所在)

  3. java -jar test.jar -cp /tmp/config.properties(显然它不起作用,但是让你知道我想在这里实现的目标)

虽然我把config.properties文件的路径放在我的$ PATH和$ CLASSPATH下,但代码都不起作用,所有三个都抛出了NPE.

关键是,从长远来看,我将配置文件放在$ {my-config-path}中,并正确读取/处理它.但暂时我只想要快速而肮脏的东西.

  1. 我不想在我的jar中包含属性文件.
  2. 我想在类路径或路径中将它保留在外部,当我执行jar时,它会毫无问题地找到它.

java jar properties

3
推荐指数
1
解决办法
9363
查看次数

使用maven配置文件进行工件版本控制

我希望项目的版本号为正常发布版本的以下格式:

<version>1.0-SNAPSHOT</version>
<version>1.0.1-SNAPSHOT</version>
......
Run Code Online (Sandbox Code Playgroud)

另一方面,我希望为每个合并的变更都有一个构建的工件,如下所示:

<version>1.0-SNAPSHOT-${timestamp}</version>
Run Code Online (Sandbox Code Playgroud)

我可以使用maven配置文件实现这一目标吗?就像是:

<profiles>
    <profile>
        <id>normal</id>
        <version>1.0-SNAPSHOT<version>
    </proifle>
    <profile>
        <id>build</id>
        <version>1.0-SNAPSHOT-${timestamp}<version>
    </proifle>
</profiles>
Run Code Online (Sandbox Code Playgroud)

所以我可以建立它像:

mvn package -P normal  // this gives me artifact-1.0-SNAPSHOT.jar
or
mvn package -P build     // this gives me artifact-1.0-SNAPSHOT-${timestamp}.jar 
Run Code Online (Sandbox Code Playgroud)

如果配置文件可以解决这个问题,那么其他方法是什么?

versioning profile build artifactory maven

3
推荐指数
1
解决办法
4622
查看次数

最有效的方法来从字符串子串路径和文件

我是python的新手,只是想知道python执行以下操作的最佳方法是什么:

file='/var/log/test.txt'
==action==
Run Code Online (Sandbox Code Playgroud)

在== action ==之后,我想得到的路径和文件分开如下:

path='/var/log'
file_name='test.txt'
Run Code Online (Sandbox Code Playgroud)

我不是问如何做到这一点,我问最有效的方法是使用最少的代码行来做到这一点.

= EDIT =

如果我的文件='test.txt'而不是file ='/ var/log/test.txt'怎么办?我更可能期望:

path='.'
path='test.txt'
Run Code Online (Sandbox Code Playgroud)

以外

path=''
file_name='test.txt'
Run Code Online (Sandbox Code Playgroud)

这是什么意思呢?

python substring

3
推荐指数
2
解决办法
1806
查看次数