Во-первых, проверьте, является ли это Процесс-зомби (который очень возможен):
ps -Al
Вы будете видеть что-то как:
0 Z 1000 24589 1 0 80 0 - 0 exit ? 00:00:00 soffice.bin <defunct>
(Отметьте "Z" слева),
Если 5-й столбец не 1, то это означает, что это имеет родительский процесс. Попытайтесь уничтожить тот идентификатор родительского процесса.
Если его PPID = 1, не УНИЧТОЖАЙТЕ IT!!, думайте, который другие устройства или процессы могут быть связаны с ним.
Например, при использовании смонтированного устройства или самбы попытайтесь размонтировать ее. Это может выпустить Процесс-зомби.
Примечание: Если ps -Al
(или top
) показывает "D" вместо "Z", он мог быть связан с удаленным монтированием (как NFS). По моему опыту, перезагрузка является единственным способом пойти туда, но можно проверить другие ответы, которые касаются того случая более подробно.
Прежде всего, что ^ M
- это возврат каретки ( \ r
), а не перевод строки ( \ n
). \
- это снова что-то другое, оно нужно для выхода из новой строки, поэтому программы синтаксического анализа csv не будут рассматривать его как конец записи.
На самом деле у вас есть файл, созданный в Windows, где конец строки определяется как \ r \ n
, а не просто \ n
, как у вас на * nix. Я не могу быть уверен, если вы не дадите нам отрывок из своего фактического файла, но если вы увидите ^ M \
в vim
, за которым следует \
и затем новая строка, у вас, вероятно, есть \ r \\ n
в файле. Итак, попробуйте следующее:
perl -i -pe 's/\r\\\n/ /'g file
Перед новой строкой стоит возврат каретки.
Вы можете s,. $ ,,
в vim
, чтобы удалить последний символ в любой строке.
Или вы можете s, ^ M $ ,,
. Чтобы получить настоящий символ «^ M», а не регулярное выражение последовательности ^, M, $
, нажмите Ctrl V , затем нажмите Ctrl M .