Я попробовал transport
класс, и это было действительно здорово. Вот код, который я использовал:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname = "host_ip", username = "un"], password = "up")
channel = ssh.get_transport().open_session()
pty = channel.get_pty()
shell = ssh.invoke_shell()
shell.send("cd /my/directory/; nohup ./exec_name > /dev/null 2>&1 &\n")
Но я до сих пор не знаю, как его убить, используя скрипты python; У меня есть открытый вопрос об этом здесь .
EDIT 1:
Я решил свою проблему об убийстве процесса как-то; вы можете проверить это.
Создать новый список с объектами, например, new ArrayList<>(subjects)
и делай как хочешь.
Вы должны просто создать новый List
(следует использовать под-реализацию) с вашим исходным списком в качестве аргумента.
Любые изменения элементов в любом из контейнеров (оригинальный список или его копия) будут влиять на сам объект, поскольку вы манипулируете ссылочным объектом, а удаление или вставка элементов в любом из этих контейнеров не повлияет на другой, так они полностью разделены:
class Student {
String name;
List<Subject> subjects;
private void someMethod() {
// create a shallow copy
List<Subject> copy = new ArrayList<>(subjects);
// edit the contained elements
copy.get(0).setSomeProperty();
}
}
ArrayList<student> studentsListCopy = new ArrayList<student>();
for(int i=0;i<studentList;i++)
{
studentsListCopy.add(studentList[i])
}
Возможно, вы искали что-то подобное?