0
scp를 사용하여 한 서버에서 다른 서버로 파일을 보내려면 jcraft 라이브러리를 사용하고 있습니다. 내가 사용하여 연결을 clossing하고 있기 때문에 코드는 너무sftp java 클라이언트가 원격 시스템에서 sshd 프로세스를 계속 실행합니다.
Scp scp=new Scp();
scp.setDestinationHost(CopyDestHost);
scp.setDestinationPassword(CopyDestPassword);
scp.setDestinationPublicKeyFile(CopyDestKey);
scp.setDestinationUserName(CopyDestUser);
scp.setSourceFile(temp.getAbsolutePath());
scp.setDestinationDirectory(filepath);
stream.flush();
stream.close();
scp.send();
처럼, 이것은 새로운 객체를 생성되어 각각의 다른 자바 클래스, 여러 번에서 호출되어있다이
public class Scp {
String DestinationHost;//host IP
String DestinationUserName;//username
String DestinationPassword;//password
String DestinationPublicKeyFile;//public key-if any
String DestinationDirectory;//where to save on remote
String SourceFile;
/*
setters-getters
*/
public void send() throws SftpException, FileNotFoundException, JSchException{
JSch jsch = new JSch();
Session session = null;
session = jsch.getSession(DestinationUserName,DestinationHost,22);
jsch.addIdentity(getDestinationPublicKeyFile(),getDestinationPassword());
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelSftp channel = null;
//try to connect
channel = (ChannelSftp)session.openChannel("sftp");
channel.connect(30000);
channel.connect();
File localFile = new File(getSourceFile());
File remoteFile=new File(getDestinationDirectory());
channel.cd(remoteFile.getParent());
channel.put(new FileInputStream(localFile),//the source file
remoteFile.getParentFile().getName());//the destination name(not the path)
channel.disconnect();
session.disconnect();
}
}
같다 channel.disconnect();
및 session.disconnect();
연결이 닫힌 후 내 원격 컴퓨터에서 실행되는 sshd
프로세스의 거대한 목록이 왜 표시됩니까? 예 :
root 13251 863 0 11:54 ? 00:00:00 sshd: skaros [priv]
user 13300 13251 0 11:54 ? 00:00:00 sshd: [email protected]
skaros 13301 13300 0 11:54 ? 00:00:00 /usr/lib/openssh/sftp-server
root 14885 863 0 10:35 ? 00:00:00 sshd: skaros [priv]
skaros 14986 14885 0 10:35 ? 00:00:00 sshd: [email protected]
skaros 14987 14986 0 10:35 ? 00:00:00 /usr/lib/openssh/sftp-server
나는 그들을 수동으로 죽여야합니까? 나는 그걸 그냥두고 갈까?
파일을 복사하는 동안 예외가 발생합니까? – Kenster
@Kenster some, 가끔. 하지만 나는 그들이 실행중인 프로세스만큼이나 많다고 생각하지 않는다. 그러나 그것에 대해 확실하지 않다. –
1) Java 프로세스를 종료 한 후 원격 프로세스가 사라지나요? 2) 독립형 SFTP 클라이언트를 사용해 보셨습니까? 당신도 똑같은 행동을하거나 원격 프로세스가 제대로 닫혔습니까? –