проверить, не содержит ли строка строку в данном поле [закрыто]

Does systemd provide some protection against this […]?

Usted está asumiendo que debería. Por el contrario, considere configuraciones como TTYPathy servicios como getty@.service. La capacidad de obtener un terminal de control es en realidad necesaria , para que la gestión de servicios pueda abarcar los servicios de inicio de sesión de TTY, que deben hacer precisamente eso.

Lo que realmente protege contra esto es alejarse de la asignación automática de un terminal de control en open()y descartar la semántica antigua. O protegería contra ella. No es el caso en Linux, pero en FreeBSD, NetBSD, OpenBSD y Hurd hoy en día la bandera O_NOCTTYa open()es completamente superflua. La única forma de adquirir una terminal de control es exigiéndola explícitamente, con ioctl(…TIOSCTTY). Este ha sido el caso durante casi un cuarto de siglo, desde los días de 4.4BSD.

Mientras tanto, el hábito de entrar en Linux es el hábito que también ha sido el caso durante mucho tiempo, mucho antes de systemd:O_NOCTTYen todas partes . & #9786;

(Sí, las bibliotecas GNU y musl C no te dan esto por fopen(). Esta es una de varias razones por las que fdopen()sigue siendo un mecanismo útil.)

La gestión de servicios con el conjunto de herramientas de nosh service-managertoma un rumbo ligeramente diferente en esto. En lugar de convertir siempre los procesos daemon en líderes de sesión, a cada servicio se le asigna su propio objeto de sesión del kernel que luego no tiene uso, solo los servicios específicos también se encadenan a través de setsidexplícitamente; tales como ttylogin@*servicios que utilizan open-controlling-tty, agetty@*servicios donde, por supuesto, agettyconfigura el terminal de control y getty@*servicios. (Como se indica en la fuente del servicio, mgettyse llama setsid()a sí mismo.)

Lecturas adicionales

0
15.03.2018, 22:22
2 ответа

Черезawkдинамическую переменную/аргумент-v <var>=<value>:

Тестовый пример для строкиz:

awk -v s="z" '$2==s{ c++ }END{ printf "%s \042%s\042\n", (c? c : "no"), s }' file

Выход:

3 "z"

Тестовый пример для строкиw:

awk -v s="w" '$2==s{ c++ }END{ printf "%s \042%s\042\n", (c? c : "no"), s }' file

Выход:

no "w"
1
28.01.2020, 02:43

Если я правильно понял, вы хотите проверить, имеет ли второй столбец определенный алфавит, если да, попробуйте ниже awkскрипт, который сообщит, какой из них существует с соответствующим количеством, а какой нет с "NOT FOUND!"замечание.

awk -v alphabet="$(printf "%s" {a..z})" 'BEGIN{ split(alphabet, arr, "") }
    { chrs[$2]++ } END{ for(y in chrs) for(x in arr)
        { if(arr[x] in chrs) {print y, chrs[y]; delete arr[x]; break }
            else{ print arr[x]" NOT FOUND!"; delete arr[x] }
        }
}' infile

Выход:

w 1
z 3
a 1
b 1
c 1
f NOT FOUND!
g NOT FOUND!
h NOT FOUND!
i NOT FOUND!
j NOT FOUND!
k NOT FOUND!
l NOT FOUND!
m NOT FOUND!
n NOT FOUND!
o NOT FOUND!
p NOT FOUND!
q NOT FOUND!
r NOT FOUND!
s NOT FOUND!
t NOT FOUND!
u NOT FOUND!
v NOT FOUND!
d 1
x NOT FOUND!
y NOT FOUND!
e 1
0
28.01.2020, 02:43

Теги

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