반응형

출처

https://serverfault.com/questions/394815/how-to-update-curl-ca-bundle-on-redhat

Redhat에서 cURL CA 번들 업데이트하는 방법?

저는 cURL이 기한이 지난 버전으로 CA 번들에 관한 문제가 있습니다.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

제가 필요한 것이나 어떻게 해야하는지 이해하지 못했기 때문에 문서를 읽는 것은 도움이 되지 않았습니다. 저는 CA 번들을 업데이트할 필요가 있고 Redhat에서 실행할 것입니다. 업데이트 Redhat에서 CA 번들을 업데이트 하려면 필요한 게 무엇이 있을까요?


7개의 답변 중 2개의 답변

RHEL 6 이상에서, 당신은 아래 답변에 lzap님이 설명한대로 update-ca-trust를 사용해야 합니다.

Fedora, CentOS, Redhat 이전버전 :

Curl은 /etc/pki/tls/certs/ca-bundle.crt에 저장된 시스템 기본 CA 번들을 사용합니다. 이것을 변경하기 전에 만약 필요하다면 시스템 기본값으로 복구할 수 있도록 이 파일의 복사본을 만드세요. 당신은 파일에 새로운 CA 인증서를 추가하거나 전체 번들을 대체할 수 있습니다.

인증서를 얻는 곳에 대해 궁금하십니까? 저는 curl.se/ca를 추천합니다. 다음 한 줄이면 됩니다.

curl https://curl.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fedora Core 2 위치는 /usr/share/ssl/certs/ca-bundle.crt 입니다.


lzap 답변

RHEL 6+ 시스템에서 할 수 있는 추천하는 방법은 기본으로 설치된 update-ca-trust 툴을 사용하는 것입니다.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

따라서 crt 파일을 /etc/pki/ca-trust/source/anchors/에 드롭하고 도구를 실행하기만 하면 됩니다. 이 작업은 안전하며 백업을 수행할 필요가 없습니다. 전체 매뉴얼 페이지는 https://www.mankier.com/8/update-ca-trust에서 찾을 수 있습니다.

반응형
반응형

sed 에서 2개 이상 검색으로 찾고 제일 마지막 조건에 매칭되는 문자열로 변환하는 방법?

sed에서는 여러 검색 조건을 동시에 사용할 수 있습니다. 이를 위해서는 각 검색 조건을 별도의 표현식으로 나타내고 이를 쉼표(,)로 구분하면 됩니다. 예를 들어, 파일에서 "apple"과 "orange"이라는 단어가 포함된 모든 라인에서 "fruit"으로 치환하고 싶은 경우 다음과 같이 사용할 수 있습니다.

sed -e '/apple.*orange/ s/.*/fruit/' filename.txt

위 예제에서, `/apple.*orange/`은 "apple"과 "orange"이라는 두 단어가 함께 포함된 라인을 찾는 검색 조건입니다. `s/.*/fruit/`는 해당 라인 전체를 "fruit"으로 치환합니다.

만약 "apple"과 "orange"이라는 단어가 각각 따로 있는 라인에서 "fruit"으로 치환하고 싶다면, 다음과 같이 두 개의 검색 조건을 사용하면 됩니다.

sed -e '/apple/ {/orange/ s/.*/fruit/}' filename.txt

위 예제에서, `/apple/`은 "apple"이 포함된 라인을 찾는 검색 조건입니다. 중괄호({}) 안에는 해당 라인에서 다른 검색 조건 `/orange/`을 추가하고, 그 라인을 "fruit"으로 치환하는 명령어가 포함됩니다.

이 방법으로는 두 개 이상의 검색 조건을 동시에 사용하고, 맨 마지막에 매칭되는 문자열로 치환할 수 있습니다.

---

  • ChatGPT로부터 답변 받음
  • answered by ChatGPT
반응형
반응형

출처

https://stackoverflow.com/questions/39604202/listing-md5sum-for-all-files

모든 파일 md5sum 목록 보여주기

저는 파일의 목록과 이들의 md5sum를 생성하는 아래 명령어를 사용하려 합니다. 문제는 이름에 몇개 파일이나 폴더에서 공백이 있습니다. 어떻게 이를 다룰 수 있을까요?

find -type f -name \* | xargs md5sum

2개의 답변 중 1개의 답변

다음을 수행해 보세요.

find . -type f -exec md5sum {} +

이 명령어로 find는 찾은 파일로 md5sum을 실행할 것입니다.

MacOS: MacOS find man page에 따르면, find+옵션을 지원하지 않습니다. 대신에 덜 효율적인 (아래 3을 봐주세요.) 형식이 요구됩니다.

find . -type f -exec md5sum {} \;

노트:

  1. -name \는 모든 파일을 find로 찾으라고 합니다. 이는 기본값이기 때문에 그것을 지정할 필요는 없습니다.
  2. 이름에 공백이 있는 것은 현대적인 파일 이름에 보편적인 현상입니다. 사실, 파일 이름에 개행이 있을 수도 있습니다. 결국, xargs-0 또는 --null 옵션으로 NULL로 구분된 입력을 사용하지 않는다면 일반적으로 안전하지 않습니다. 이는 find의 -print0으로 NULL로 구분된 출력을 생성한다고 find를 실행하기 위해 결합되어 사용될 수 있습니다. 하지만 -exec는 어려운 파일 이름에도 안전하게 xargs를 실행할 수 있도록 최선의 것으로 실행하며, -exec 형식이 주로 선호됩니다.
  3. 만약 형식 -exec md5sum {} \;를 사용하였다면, find는 각 파일이 찾아질 때마다 md5sum을 실행할 것입니다. 형식 -exec md5sum {} +는 반면 명령어 줄에서 많은 파일 이름으로 사용될 수 있습니다. 이는 시작해야 될 프로세스의 수를 줄일 수 있습니다.

예시

위의 명령어의 샘플 출력입니다.

$ find . -type f -exec md5sum {} +
e75632e8a11db7513c2a9f25cb6c9627  ./file1
004dedba9b67f3a93924db548fd4d6ef  ./file2
48645402a2cf6ada3548ad69d8d906db  ./dir1/file1
6a182d8fe659c067897be7fde72903ea  ./dir1/file2

추가 참고자료

반응형
반응형

출처 : https://www.educba.com/zip-command-in-linux/

Linux에서 Zip 명령 소개

ZIP은 Unix에서 파일 압축 기술 패키징 유틸리티 입니다. 파일은 확장자 .zip으로 하나의 파일에 저장됩니다. Linux에서 Zip 명령은 MSDOS, OS/2, Window NT, Minix, 매킨토시 등과 같은 거의 모든 운영 체제에 의해 주로 지원됩니다. 압축과 tar는 명령어로 사용되며 PKZIP(MSDOS 시스템을 위한 Phil Katz의 ZIP)와 호환됩니다.

문법:

zip [몇가지 옵션]  zip파일 파일디렉터리/파일목록

zip파일은 새로운 혹은 이미 존재하는 zip 압축이며 파일디렉터리/파일목록은 와일드카드를 포함하는 경로입니다. zip 압축과 같은 이름이 발견되면 그것을 갱신할 것입니다.

예시: 만약 폴더/파일_1과 폴더/파일_2가 folder.zip에 포함되어 있고 디렉터리 폴더는 폴더/파일_1과 폴더/파일_3을 포함 합니다. 그렇다면 명령을 실행하기 전에 folder.zip은 다음 파일이 있습니다.

  • 폴더/파일_1
  • 폴더/파일_2

디렉터리 폴더는 다음 파일이 있습니다.

  • 파일_1
  • 파일_3

명령을 실행하면 folder.zip은 다음 파일을 가지고 있습니다.

  • 폴더/파일_1
  • 폴더/파일_2
  • 폴더/파일_3

폴더/파일_1은 교체되며 폴더/파일_3은 새로운 파일입니다. 그래서, folder.zip은 폴더/파일_1, 폴더/파일_2, 폴더/파일_3을 포함하며 폴더/파일_2는 이전과 변화되지 않습니다.

Linux에서 Zip 파일 압축풀기 문법

명령은 Unix 시스템에서 압축으로부터 파일의 압축을 풉니다. 아무런 옵션이 없을 때 특정 ZIP 압축파일로부터 현재 작업 디렉터리(와 그 안에 하위 디렉터리)로 그것의 압축을 풉니다.

문법:

$unzip fold.zip

Linux에서 Zip 명령 옵션

이제 아래의 Zip 명령 옵션에 집중해 봅시다.

1) -u 옵션

파일을 갱신합니다. 이는 압축에서 기존 엔트리도 갱신하며 이미 있는 버전보다 더 많이 수정된 경우에만 갱신됩니다.

명령:

$zip -u 파일명.zip 파일.txt

현재 디렉터리에 아래와 같은 파일이 있다 가정합니다.

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt

문법:

$zip –u 파일명.zip 파일5.txt

파일명.zip으로부터 파일5.txt를 갱신한 후, unzip 명령으로 파일을 복구할 것입니다.

명령:

$unzip file_name.zip
$ls command

출력:

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt
  • 파일5.txt

파일5.txt는 zip로 갱신되었습니다.

2) -d 옵션

zip 압축으로부터 파일을 삭제합니다. 이 옵션은 생성된 파일을 삭제합니다. 현재 디렉터리에 다음 파일이 있습니다.

문법:

$zip –u 파일명.zip 파일.txt

명령:

$zip –d file_name.zip file5.txt

파일명.zip으로부터 파일5.txt를 삭제한 후 unzip 명령으로 파일을 복구할 것입니다.

명령:

$unzip file_name.zip
$ls command

출력:

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt
  • 파일5.txt

파일5.txt는 zip 파일로부터 삭제되었습니다.

3) -m 옵션

zip 압축 후에 original/main 파일을 삭제할 것입니다. zip을 만들고 원래 파일/폴더를 삭제함으로써 파일을 옮길 것입니다.

디렉터리가 파일을 삭제한 후 비어 있으면 해당 디렉토리도 함께 삭제됩니다. zip이 오류 없이 압축을 생성할 때까지 삭제가 완료되지 않습니다. 따라서 이것은 디스크 공간을 유지하는 데 유용하지만 모든 입력 파일을 제거하는 동안 궁극적으로 안전하지 않습니다.

문법:

$zip –m 파일명.zip 파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip -m 파일명.zip *.txt

터미널의 이 명령을 실행한 후에 결과는 다음과 같습니다.

명령:

$ls command

출력:

  • 파일명.zip
  • // txt(확장자)인 다른 파일은 발견되지 않습니다.

4) -x 옵션

zip을 만들 때 파일을 제외합니다. 현재 디렉토리에 있는 모든 파일을 압축하고 필요하지 않은 몇 개의 파일을 제외하려고 한다고 가정해 보겠습니다. 따라서 -x 옵션을 사용하여 필요하지 않은 이러한 파일을 제외할 수 있습니다.

문법:

$zip –m 파일명.zip 제외될파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip –x 파일명.zip 파일_3.txt

이 명령은 파일_3.txt 제외하고 모든 파일을 압축할 것입니다.

명령:

$ls command

출력:

  • 파일명.zip // 압축된 파일
  • 파일_3.txt // 압축하는 동안 제외된 파일

5) -r 옵션

재귀적으로 zip을 그 안에 폴더까지 만들 것입니다.

문법:

$zip –r 파일명.zip 디렉터리명

아래처럼 현재 디렉터리 (doc)에 다음 파일이 있다고 가정합니다.

  • a.pdf
  • b.pdf
  • c.pdf

명령:

$zip –r filedir.zip doc

이 명령은 파일_3.txt 제외하고 모든 파일을 압축할 것입니다.

출력:

  • adding: doc/ // 디렉터리 압축
  • adding: doc/a.pdf // 첫 번째 파일 압축
  • adding: doc/b.pdf // 두 번째 파일 압축
  • adding: doc/c.pdf // 번째 파일 압축

6) -v 옵션

자세히(Verbose) 모드 옵션을 사용하여 우리는 분석 정보를 출력할 것입니다. 이 옵션은 압축 도중에 진행상황 표시를 보여주며 zip 구조에 관한 자세한 정보를 요청합니다.

문법:

$zip –v 파일명.zip 파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip -v file1.zip *.txt

출력:

  • adding: file_1.txt (in=0) (out=0) (stored 0%)

  • adding: file_2.txt (in=0) (out=0) (stored 0%)

  • adding: file_3.txt (in=0) (out=0) (stored 0%)

  • adding: file_4.txt (in=0) (out=0) (stored 0%)

  • total bytes=0, compressed=0 -> 0% savings

Linux의 Zip 명령 사용

Linux의 Zip 명령 사용은 다음과 같습니다.

  • ZIP은 적은 대역폭이나 인터넷 속도가 느릴 때 완벽한 기술이며 당신은 파일 여러개를 전송할 수 있습니다. 그리고 이제 이 명령을 사용하여 당신은 매우 효과적인 방법으로 파일을 압축하고 전송할 수 있습니다.
  • zip 프로그램은 하나 그 이상의 압축된 파일을 이름, 경로, 날짜, 마지막 수정시간, 보호, 파일 무결성을 검증하기 위한 체크 정보와 함께 하나의 zip으로 압축합니다. 전체 디렉터리 구조는 명령 하나로 하나의 zip 압축될 수 있습니다.
  • 압축률이 2:1에서 3:1로 텍스트 파일이 일반적이기 때문에 디플레이션 방식을 사용하거나 압축하지 않고 파일을 저장합니다. 그러면 압축할 각 파일에 가장 적합한 것이 자동으로 선택됩니다.
  • 파일 보관에 매우 편리합니다. 사용하지 않는 파일이나 디렉터리를 압축하여 짧은 시간 동안 배포 및 디스크 공간 절약을 위해 파일 세트를 패키징합니다.

결론

이제 우리는 압축풀기(unzip)와 압축하기(zip)의 개념을 이해하였고 다른 옵션을 사용하여 압축된 파일을 조작하는 방법을 알았습니다. ZIP은 파일 여러개를 전송하기 원하거나 낮은 대역폭이나 인터넷 속도가 느릴 때 완벽한 기술입니다. 이제 이 명령을 사용하여 당신은 zip으로 압축하여 매우 효율적인 방법으로 파일을 전송할 수 있습니다.

반응형
반응형

출처
https://serverfault.com/questions/7689/how-do-i-get-rid-of-sockets-in-fin-wait1-state

FIN_WAIT1 상태를 소켓에서 어떻게 제거하나요?

kill이 필요한 프로세스에 의해 차단된 포트가 있습니다. (충돌한 telnet 대몬). 프로세스가 성공적으로 종료되었지만 포트는 여전히 'FIN_WAIT1' 상태입니다. 그것은 나오지 않으며, 그 시간 초과는 '십년'으로 설정된 것 같습니다.

포트를 해제할 수 있는 유일한 방법은 전체 시스템을 재부팅하는 것인데, 이는 당연히 하고 싶지 않은 일입니다.

$ netstat -tulnap | grep FIN_WAIT1 
tcp        0  13937 10.0.0.153:4000         10.0.2.46:2572 

리부팅 없이 블록되지 않도록 포트를 처리하는 방법에 대해 아시는 분 있나요?


9개의 답변 중 1개의 답변

# tcp_max_orphans의 현재 값을 기록
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)

#tcp_max_orphans를 임시로 0 으로 설정
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans

# /var/log/messages 확인
# 그것은 "kernel: TCP: too many of orphaned sockets"를 뱉어낼 것입니다.
# 접속이 없어지는 데 오래 걸리지 않을 것입니다. 

# 이전에 있던 tcp_max_orphans 의 값을 복구합니다.
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans

# 다음으로 검증합니다.
netstat -an|grep FIN_WAIT1
반응형
반응형

출처 : https://superuser.com/questions/98974/how-to-use-crontab-to-run-a-script-as-nobody

nobody로 스크립트 실행하기 위해 crontab 사용하는 방법

이는 CentOS 머신입니다. 저는 매일 특정 시간에 (최소 권한으로 사용자로써) 사용자 nobody로 스크립트를 실행하려 합니다. 여기에 nobody가 있습니다.

[root@CentOS % ~] grep "^nobody" /etc/passwd  
nobody:x:99:99:Nobody:/:/sbin/nologin  

루트의 crontab에서 제가 실행하려 한 것입니다.

환경변수 SUDO_USER=nobody로 설정하고
15 17 * * * sudo -u nobody /bin/bash /usr/local/bin/bashscript.sh
15 17 * * * su -c /usr/local/bin/bashscript.sh nobody

저는 모두 가능한 루트의 crontab에 엔트리를 유지하고 싶습니다. 나는 또한 해당 설정에 의존할 수 있는 다른 어떤 것도 깨뜨리고 싶지 않기 때문에 아무도 nobody의 계정을 속이지 않는 것을 선호합니다. 나는 권한이 없는 다른 계정을 만들고 그것이 문제가 되는 경우 실제 쉘을 제공하는 것에 반대하지 않습니다.

저도 약간 당혹스러웠던 점은 인정합니다. 도움이 되지 않는다는 점을 제외하고는 이것이 일상적인 문제라고 가정합니다.

5개의 답변

저는 crontab -e 또는 crontab -l 내용에서 당신이 작성했다고 가정합니다?

이것은 사용자 "루트"에 속한 crontab 파일이며 해당 파일은 (일반적으로 개인 작업을 예약하는 데 사용되는 파일) 명령을 실행할 사용자 지정을 지원하지 않습니다 .
시스템 전체의 crontab이고 추가 필드인 사용자 필드가 있는 /etc/crontab을 보십시오. /etc/crontab에 다음과 같은 줄을 추가해 보십시오.

15 17 * * * nobody /usr/local/bin/bashscript.sh
반응형
반응형

출처 : https://stackoverflow.com/questions/4181703/how-to-concatenate-string-variables-in-bash

Bash에서 문자열 변수 합치는 방법

PHP에서 문자열들은 다음처럼 함께 합쳐질 수 있습니다.

$foo = "Hello";
$foo .= " World";

여기 $foo는 "Hello World"가 됩니다.

Bash로 이를 어떻게 이룰 수 있을까요?


30개의 답변 중 2개의 답변

foo="Hello"
foo="${foo} World"
echo "${foo}"
> Hello World

일반적으로 두 변수를 연결하려면 다음과 같이 하나씩 작성하면 됩니다.

a='Hello'
b='World'
c="${a} ${b}"
echo "${c}"
> Hello World

Bash도 이 코드에서 보듯이 += 연산자를 지원합니다.

A="X Y"
A+=" Z"
echo "$A"

출력

X Y Z

반응형
반응형

CentOS 6 ca-certificates 패키지 수동 설치

수동 설치 shell

문제점

# vi CentOS-Base.repo
[base]
...
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
[updates]
...
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
[extras]
...
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
  • 위에처럼 변경하였지만 다음과 같이 SSL 접속에 문제가 발생하였습니다.
# yum install openssh-clients
http://vault.centos.org/centos/6/os/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection

해결과정

  • yum으로 패키지를 설치할 수가 없어서 rpm 파일을 https://vault.centos.org 에서 직접 다운로드 받아 설치하는 방법을 사용하였습니다.

  • CentOS 6.10 기준으로 찾아 보았고 다음 주소에서 rpm 파일들을 찾기 시작하였습니다.

  • SSL 문제로 wget 프로그램을 통해 --no-check-certificate 옵션을 추가하여 rpm 파일을 다운로드 받았습니다.

  • rpm 프로그램을 실행하면서 패키지를 다운로드 받았습니다. 그 결과 위에처럼 수동 설치 shell을 만들 수 있었습니다.

#!/bin/bash
wget https://vault.centos.org/6.10/os/x86_64/Packages/ca-certificates-2018.2.22-65.1.el6.noarch.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/p11-kit-0.18.5-2.el6_5.2.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/p11-kit-trust-0.18.5-2.el6_5.2.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/libtasn1-2.3-6.el6_5.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-3.36.0-8.el6.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-sysinit-3.36.0-8.el6.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-tools-3.36.0-8.el6.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nspr-4.19.0-1.el6.x86_64.rpm  --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-softokn-3.14.3-23.3.el6_8.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-util-3.36.0-1.el6.x86_64.rpm --no-check-certificate
wget https://vault.centos.org/6.10/os/x86_64/Packages/nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64.rpm --no-check-certificate

rpm -Uvh ca-certificates-2018.2.22-65.1.el6.noarch.rpm p11-kit-0.18.5-2.el6_5.2.x86_64.rpm p11-kit-trust-0.18.5-2.el6_5.2.x86_64.rpm libtasn1-2.3-6.el6_5.x86_64.rpm nss-3.36.0-8.el6.x86_64.rpm nss-sysinit-3.36.0-8.el6.x86_64.rpm nss-tools-3.36.0-8.el6.x86_64.rpm nspr-4.19.0-1.el6.x86_64.rpm nss-softokn-3.14.3-23.3.el6_8.x86_64.rpm nss-util-3.36.0-1.el6.x86_64.rpm nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64.rpm

Discussion

Windows XP 처럼 업데이트를 더 이상 지원하지 않는 CentOS 6을 사용하는 것의 어려움을 느꼈습니다. 최신 버전의 운영체제를 사용하는 것이 필요하다고 뼈저리게 느꼈습니다.
업데이트를 더 이상 지원하지 않는 CentOS의 패키지를 https://vault.centos.org 에서 다운로드 받을 수 있었습니다. CentOS 6보다 더 낮은 버전의 패키지도 있다는 점이 놀라웠고 좋았습니다. 위 홈페이지도 오래동안 유지되면 좋겠습니다.

반응형
반응형

출처 : https://stackoverflow.com/questions/2229825/where-can-i-set-environment-variables-that-crontab-will-use

crontab이 사용할 환경 변수를 어디에서 설정할 수 있습니까?

저는 매 시간마다 실행하는 crontab이 있습니다. 그것을 실행하는 사용자는 터미널에서 작업을 실행할 때 작동하는 .bash_profile의 환경 변수를 가지고 있습니다. 하지만, 그것을 실행할 때 환경변수가 crontab에 의해 선택되지는 않습니다.

저는 환경변수를 .profile.bashrc에서 설정을 시도했지만, 그 환경변수는 선택되지 않는 듯 합니다. crontab이 선택할 수 있도록 환경 변수을 어디에 넣어야 하는지 아시는 분 있으신가요?


20개의 답변 중 1개

명령어 라인에서 crontab -e를 실행했을 때 그 crontab 자체에서 환경 변수를 정의할 수 있습니다.

LANG=nb_NO.UTF-8
LC_ALL=nb_NO.UTF-8
# m h  dom mon dow   command

* * * * * sleep 5s && echo "yo"

이 특징은 cron의 특정 구현에서만 가능합니다. 우분투와 데비안은 crontab 파일 ( GNU mcron 도) 에서 선언을 허용하는 vixie-cron을 현재 사용합니다.

ArchlinuxRedhat은 환경변수를 허용하지 않고 cron.log에서 문법 오류를 발생하는 cronie를 사용합니다. 작업은 엔트리 마다 할 수 있습니다.

# m h  dom mon dow   command
* * * * * export LC_ALL=nb_NO.UTF-8; sleep 5s && echo "yo"
반응형
반응형

출처 : https://stackoverflow.com/questions/20449680/boolean-operators-a-o-in-bash

Bash에서 Boolean 연산자( &&, -a, ||, -o )

Unix 연산자 &&, -a, ||, -o 사이에 차이점을 설명해 주실수 있으신가요?

2가지 타입의 사용법에 제약은 무엇인가요?

간단히 &&|| 연산자는 조건에서 flag를 사용할 때만 사용되나요?

다음처럼 :

[ "$1" = "yes" ] && [ -r $2.txt ]

[ "$1" = "yes" -a $2 -lt 3 ]

입니다.

2개의 답변 중 1개의 답변

경험상 법칙 : 대괄호 안에 -a-o를 사용하고 밖에서는 &&||를 사용합니다.

shell 구문과 [명령의 구문 사이의 차이점을 이해하는 것이 중요합니다.

  • &&||는 shell 연산자입니다. 두 명령의 결과를 결합하는 데 사용됩니다. 그것들은 shell 구문이기 때문에 특별한 구문적 의미가 있으며 명령의 인수로 사용할 수 없습니다.

  • [ 는 특별한 구문이 아닙니다. 실제로 이름 [ 또는 test로 알려진 명령입니다. [ 는 일반적인 명령이므로 -a-oandor 또는 연산자로 사용합니다. &&||는 명령으로 볼 수 없는 쉘 구문이기 때문에 (안에서는) 사용할 수 없습니다.

하지만 기다리십시오! Bash에는 [[ ]] 형식의 더 멋진 테스트 구문이 있습니다. 이중 대괄호를 사용하면 정규식 및 와일드 카드와 같은 항목에 액세스 할 수 있습니다. 대괄호 안에서 &&, ||, <>와 같은 쉘 연산자를 자유롭게 사용할 수도 있습니다. [ 와 달리 이중 괄호 형식은 특수 쉘 구문이기 때문입니다. Bash는 [[ 자체를 파싱하여 [[$ foo == 5 && $ bar == 6]]와 같은 것을 쓸 수 있습니다.

반응형

+ Recent posts