I work on remote servers a lot. Я працюю на віддалених серверах багато. I use SSH to connect to my servers. Використовувати SSH для підключення до моїх серверів. Quite often I run a process that I need to let run even after I close my SSH connection. Дуже часто я запустити процес, що мені потрібно, щоб працювати навіть після того як я закриваю SSH з'єднання. This could be a shell script that parses through my log files or very large mysql database restoration. Це може бути сценарій оболонки, який розбирає через мої лог файли або дуже великі відновлення баз даних MySQL. That's when I turn to a Linux command line utility called “nohup”. Ось коли я переходжу до рядка Linux утиліту командного званих "Nohup". “Nohup” is short for “no hangup”, which translates to “ignore the hang up signal”. "Nohup" є скороченням від "не повісити трубку", що означає "ігнорувати повісити Сигнал". The “hang up” signal is what happens when you log out. "Повісити" сигналу те, що відбувається, коли ви виходите з системи. What “nohup” does is that it allows you to log into your server, launch a process and log out. Що "Nohup" це те, що вона дозволяє вам увійти в свій сервер, запустити процес і вийти з системи. The process keeps running even after you have logged out. Процес бігає навіть після того як ви вийшли з системи. When you log in again you can access that process again, provided its still running. Коли ви знову увійдіть в систему можна отримати доступ до цього процесу знову, якщо його ще працює.
The basic syntax of “nohup” is: Основний синтаксис "Nohup" це:
# nohup [command] & # Nohup [команда] &
Replace “[command]” with the name of your shell script, or a command. Замінити "[команди]" на назву вашого сценарію оболонки, або команду. The “&” at the end makes the command or script run as a background process. "&" В кінці робить команда або скрипт запустити у фоновому режимі. Here's an example of how you would use “nohup” to take a backup of a large mysql database on your remote server. Ось приклад того, як можна використовувати "Nohup" прийняти резервного копіювання великих баз даних MySQL на віддаленому сервері. First, I log in to my remote server using SSH: По-перше, мені увійти в мою віддаленому сервері за допомогою SSH:
# ssh calvin@sevenacross.com # SSH calvin@sevenacross.com
Then I execute the command “mysqldump -ucalvin -phobbes largedatabase > largedatabase.db” in the “nohup” mode by adding a “nohup” before and “&” after the command: Потім виконайте команду "туздИшпр-ucalvin-phobbes largedatabase> largedatabase.db" в "Nohup режимі", додаючи "Nohup" до і "&" після команди:
# nohup mysqldump -ucalvin -phobbes largedatabase > largedatabase.db & # Nohup туздИшпр-ucalvin-phobbes largedatabase> largedatabase.db &
[1] 3999 [1] 3999
# nohup: appending output to `nohup.out' # Nohup: додавання виведення `nohup.out '
There are two lines of output that you get. Є дві лінії виробництва, що ви отримуєте. The “3999″ in the first line is the process ID of the process that I just spawned, while the “nohup: appending output to `nohup.out'” means that the out put that would usually come to the terminal is being forwarded into a file called “nohup.out” in the directory from which you launched the command. "3999" у першому рядку це процес, ідентифікатор процесу, який я тільки породив, а "Nohup: додавання виведення` nohup.out "означає, що з поклав, що, як правило, приходять до терміналу в даний час направляються в файл з назвою "nohup.out" в папці, з якої ви запустили команду. You can check if the process is still running by searching through all the running processes using the process ID: Ви можете перевірити, якщо процес все ще працює шляхом пошуку у всіх процесах що виконуються в процесі ID:
# ps -ef | grep 3999 # PS-EF | Grep 3999
calvin 3999 29848 0 18:42 ? Calvin 3999 29848 0 18:42? 00:00:00 /usr/bin/mysqldump 00:00:00 / USR / BIN / туздИшпр
calvin 6575 31852 0 18:44 pts/2 00:00:00 grep 3999 Calvin 6575 31852 0 18:44 ВТС / 2 00:00:00 Grep 3999
When the process is done running you will see an output in the command line like this: Коли цей процес відбувається виконується Ви побачите результати в командний рядок:
[1]+ Done nohup mysqldump -ucalvin -phobbes largedatabase > largedatabase.db [1] + Done Nohup туздИшпр-ucalvin-phobbes largedatabase> largedatabase.db
You can check the file “nohup.out” to check for any errors or other messages that were output while the process was running. Ви можете перевірити файл "nohup.out", щоб перевірити за будь-які помилки або інші повідомлення, які були в той час як вихідний процес був запущений. If the file remains blank that's okay. Якщо файл залишається порожнім, що все в порядку. It means no messages were output while the process was running. Це значить, немає повідомлень були вихідні під час виконання процесу була запущена.























Hello – Nohup is useful, but if you use screen you can detach and reattach to a terminal at will and have commands running in the background as well. Hello - Nohup корисна, але якщо ви використовуєте екрані можна відокремити і прикріпити до терміналу за бажанням і команд працює у фоновому режимі, а також.
http://www.gnu.org/software/screen/ http://www.gnu.org/software/screen/
– --
Bobby Боббі
I recently used the 'nohup' command as sugested for an instance of tshark I wanted to run for a long time. Нещодавно я використовував команду "Nohup" як Запропоновано для примірника tshark Я хотів бігти протягом тривалого часу.
Nohup worked great. Nohup працювали більше. Thanks guys. Спасибі, хлопці.
I am running a PERL script in background using nohup command. Я йду PERL скрипт у фоновому режимі, використовуючи Nohup команду. this script prints logs on the screen. Цей скрипт друкує журнали на екрані. Though i used & to run it in background it still prints the logs on the console . Хоча я використав & запустити його у фоновому режимі він ще друкує журнали на консолі. How can it be actually run in background so that it shouldn't print anything on the screen . Як можна реально працювати у фоновому режимі, що він не має нічого друкувати на екрані.