Распространяются ли исправления ошибок автоматически на все дистрибутивы и обновления Linux? [закрыто]

Si está tratando de iterar sobre archivos en un directorio, necesita glob el directorio así:

#!/bin/bash

List () {
    for item in "${1}/"*
            do
            echo "$item"
    done
}

Entonces llámalo como:

$ list ~

Alternativamente, si desea pasar varios archivos como argumentos, puede escribir su bucle forasí:

List () {
    for item
            do
            echo "$item"
    done
}

Que luego se puede llamar como:

$ list ~/*

¿Cuál es el problema con su función actual?:

Cuando lo llama con un glob, pasa cada archivo en el directorio como un argumento separado. Digamos que su directorio de inicio contiene file1, file2y file3. Cuando llamas al list ~/*, esencialmente estás llamando al:

list ~/file1 ~/file2 ~/file3

Luego, su ciclo forsolo se pasa al parámetro posicional 1, por lo que for item in ~/file1y los otros parámetros posicionales no se usan.

También gracias Ilkkachu por señalar que también olvidaste un /en tu hashbang, que me perdí por completo.

0
10.12.2018, 06:26
1 ответ

Нет "автоматического" распространения патчей. Ни для ядра Linux, ни для каких-либо других компонентов ОС, таких как библиотеки, программы и т. д.

Это происходит по ряду причин, которые в основном сводятся к этим:

  1. Почти все дистрибутивы применяют свои собственные патчи к «официальным источникам» перед созданием бинарных пакетов. Это приводит к -нетривиальному объему работы по применению возможных официальных, неофициальных и -из -веток -исправлений безопасности и исправлений ошибок -. И некоторые из этих исправлений являются не просто исправлениями :, они могут быть необходимы для того, чтобы пакет соответствовал политикам распространения (, например добавление обязательных --helpили --long-helpи тому подобное ).

  2. Время, когда эти «официальные исправления» попадают в дистрибутив, может сильно варьироваться в зависимости от ряда причин, таких как человеческие ресурсы, политика проверки исправлений и тому подобное.Иногда встречаются дистрибутивы, в которых не применяются некоторые исправления.

  3. В таких дистрибутивах, как Ubuntu, есть политики «поддержки», которые могут замедлить и даже заблокировать любое обновление дистрибутива, когда он «устаревает». С другой стороны, скользящие дистрибутивы, как правило, не отстают от «официальных» патчей и новых выпусков.

Для получения общих обновлений об исправлениях, -исправлениях ошибок и способах обеспечения безопасности я хотел бы предложить вам такие веб-сайты, как Еженедельные новости Linux и Phoronix .

Тем не менее, ошибка, о которой вы сообщаете, ясно говорит о том, что какой-то ваш процесс все еще работает во время выключения системы. Я бы посоветовал вам запустить несколько тестов прямо перед завершением работы, просто чтобы узнать, какой процесс завис.

На мой взгляд, ps— ваш друг, и вы можете запустить его прямо с виртуальной консоли vty (tty ).

  1. Нажмите Ctrl + Alt + F1(или F2 или F3 ), чтобы получить vty. Это не -GUI для входа.
  2. Войдите под своим именем пользователя и паролем.
  3. ВыполнитьPS_FORMAT='ruser,pid,ppid,s,%cpu,rss,cmd' ps x(мой личный фаворит ). Он покажет вам весь процесс, запущенный как «you », а также некоторые детали. Замените ps xна ps ax, чтобы увидеть все процессы.
  4. Обратите внимание на эти процессы.:PID— идентификатор процесса, PPID— идентификатор родительского процесса, идентификатор процесса, породившего этот процесс, CMD— выполняемая команда.
  5. Попробуйте закрыть/убить их перед завершением работы.
2
28.01.2020, 02:41

Теги

Похожие вопросы