나는 보통
sleep 4h; command
4 시간 후에 명령을 실행합니다. 그러나 해당 명령이 필요 sudo
하면 작동하지 않습니다.
명령을 sudo
실행하는 순간에 권한 을 부여 할 수 sleep
있습니까?
shutdown
. sudo와 적절한 인수를 사용하여 특정 시간에 절전 모드를 예약하십시오.
나는 보통
sleep 4h; command
4 시간 후에 명령을 실행합니다. 그러나 해당 명령이 필요 sudo
하면 작동하지 않습니다.
명령을 sudo
실행하는 순간에 권한 을 부여 할 수 sleep
있습니까?
shutdown
. sudo와 적절한 인수를 사용하여 특정 시간에 절전 모드를 예약하십시오.
답변:
sudo
명령을 실행하는 루트 쉘을 시작하는 데 사용하십시오 .
sudo bash -c 'sleep 4h; command'
루트 셸에서 실행되는 모든 명령은 루트 권한으로 실행되므로 sleep
손상되지 않습니다. 사용자 권한으로 명령을 실행해야하는 경우 다음을 사용하십시오 sudo -u USERNAME COMMAND
.
$ sudo bash -c 'sleep 4h; sudo -u dessert whoami; whoami'
dessert # whoami run as user dessert
root # whoami run as root
다른 방법은 sudo visudo
루트 액세스없이 명령을 실행
하는 데 사용하는 것입니다. sudo를 사용하여 비밀번호를 묻지 않고 실행을 허용하는 방법?
명령에 따라 보안 결함이 발생할 수 있습니다.
프로세스를 한 번만 (예 : 4 시간마다) 실행하지 않으려면 다음을 사용할 수 있습니다. atd
/etc/init.d/atd status
또는 그보다 나은 상태 systemctl status atd
).루트로 터미널에서 다음과 같이 명령을 실행하십시오.
# at now + 4 hours
warning: commands will be executed using /bin/sh
at> command
at> CTRL-D
4 시간마다 실행하려면 crontab에서 다음 구성과 함께 cron (루트로)을 사용할 수도 있습니다.
0 */4 * * * sh -c $'/path/to/command'
at
이 작업에 적합한 도구입니다. I / O 리디렉션도 처리하고 셸 창을 차단하지 않으며 사용자가 로그 아웃했거나 이후 컴퓨터를 재부팅 한 경우에도 작동합니다.
sudo bash -c 'sleep 4h && command' &
sudo를 백그라운드에 넣는 것은 쉘 창 / 탭을 막지 않는 더 쉬운 방법입니다. 당신이 경우 원하는 출력이 일어난 것을 상기시켜 비동기 팝업, 그 쉽다. 재부팅 후에는 작동하지 않지만 nohup
설정 에 따라 셸에서 나가거나 로그 아웃 한 후에도 계속 실행될 수 있습니다.
at
시스템이 지정된 시간에 일시 중단 될 수있는 즉시 명령 을 실행 한다는 점에 유의 하십시오. U & L 은 여기를 참조 하십시오 . 명령을 실행하려면 원하는 명령이 아닐 수도 있습니다.
systemctl status atd
한 가지 방법은 sudo
셸 스크립트가 현재 디렉토리에있는 경우 권한이 있는 셸 스크립트를 통해 실행하고 셸 스크립트 를 시작할 때 비밀번호를 제공하는 것입니다.
sudo ./delayer 4h
delayer
내용이있는 쉘 스크립트가 될 수있는 곳
#!/bin/bash
sleep "$1"
command
로 실행 가능하게 만드십시오
chmod +x delayer
PATH
원하는 경우 디렉토리로 복사하거나 이동하십시오 .
매개 변수를 입력하여 지연시킬 명령 [line]을 선택할 수있는보다 유연한 쉘 스크립트를 원하는 경우 시도해 볼 수 있습니다
#!/bin/bash
if [ $# -lt 2 ] || [ "$(whoami)" != "root" ]
then
echo "Delay start of command, that needs 'sudo'
Usage: sudo $0 <delay> <command line>
Example: sudo $0 4h parted -ls"
exit
fi
sleep "$1"
shift
"$@"
데모 예 (데모 목적으로 짧은 지연, 5 초)
$ ./delayer
Delay start of command, that needs 'sudo'
Usage: sudo ./delayer <delay> <command line>
Example: sudo ./delayer 4h parted -ls
$ sudo ./delayer 5s parted /dev/sdc p
[sudo] password for sudodus:
Model: Kanguru SS3 (scsi)
Disk /dev/sdc: 15,9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
2 1049kB 2097kB 1049kB primary bios_grub
3 2097kB 258MB 256MB fat32 primary boot, esp
4 258MB 2274MB 2016MB primary
5 2274MB 12,5GB 10,2GB ext2 primary
1 12,5GB 15,9GB 3394MB ntfs primary msftdata
/bin/sh
구문이라면 괜찮을 것입니다. 그러나 bash 특정 기능을 사용하려면 shebang이 필요합니다. 나와 스틸 드라이버는 어딘가에서 그것에 대해 토론했습니다. Aaand Videonauth가 자신의 의견을 삭제 한 후 제대로 응답했습니다. 오 잘