우분투에서 프로세스 프로필 설정

우분투에서 프로세스 프로필 설정

내 우분투 노트북에 다음과 같은 프로필을 설정할 수 있는지 궁금합니다.

  • 배터리 모드에서 실행 중인 경우 apache/mysql/postgresql을 비활성화합니다.
  • 무선이 비활성화된 경우 인터넷 연결을 시도하는 모든 프로세스를 비활성화합니다.

답변1

나는 이전에 우분투에서 그러한 프로필의 개념을 접한 적이 없었기 때문에 즉시 이 작업을 수행할 수는 없을 것이라고 추측합니다.

나는 이것을 가정하는 것이 틀렸을 수도 있습니다. 그것은 좋을 것입니다. 그러나 이 작업을 수행할 수 있는 앱이 없고 이를 설정하고 싶은 강한 욕구가 있다고 가정하면 지금부터 시작하겠습니다.

나는 여러분이 Gnome을 실행하고 있다는 가정하에 이 글을 쓸 것입니다. 왜냐하면 Gnome이 제가 가장 잘 아는 환경이기 때문입니다. 다른 데스크톱이나 콘솔 환경에 있는 경우에도 기본 프로세스 흐름이 계속 유효해야 합니다.

Gnome을 사용하면 다음을 통해 시스템 동작의 일부 측면을 구성할 수 있습니다.시스템 > 기본 설정 > 전원 관리. 이 호출그놈 파워 환경 설정이며 이는 다음에 의해 시행됩니다.그놈 전원 관리자데몬 프로세스. gnome 프로젝트 페이지에서 우리는 그것을 알고 있습니다그놈 전원 관리자노트북이 배터리 전원으로 작동하는지 여부는 HAL에 따라 결정됩니다.

그놈 전원 관리자

그러니 불을 켜세요그놈 장치 관리자HAL이 무엇을 알고 있는지 확인하세요. 항목 찾기배터리. 요약 탭만 표시되는 경우 활성화보기 > 장치 속성. 예, 필요한 두 가지 키가 있습니다.배터리.충전 가능.is_discharge그리고배터리.충전 가능.is_충전 중

그놈 장치 관리자

이제 우리는 무엇이 필요한지 알았으므로 명령줄을 통해 이에 액세스하는 방법을 찾아야 합니다. 유용하게도 HAL에는 이 정보에 액세스할 수 있는 명령줄 도구가 제공됩니다. 우리는 처음으로 실행

Hal-장치 | 더 적은

그리고 다음을 검색해 보세요.배터리.충전 가능.is_discharge열쇠. 배터리 정보를 자세히 설명하는 블록을 얻으려면 백업하세요.

56: udi = '/org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0'
  linux.subsystem = 'power_supply'  (string)
  info.capabilities = { 'battery' } (string list)
  info.subsystem = 'power_supply'  (string)
  info.product = 'DELL CC1546'  (string)
  info.udi = '/org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0'  (string)
  battery.type = 'primary'  (string)
  battery.reporting.technology = 'Li-ion'  (string)
  battery.technology = 'lithium-ion'  (string)
  battery.model = 'DELL CC1546'  (string)
  battery.vendor = 'Panasonic'  (string)
  battery.voltage.design = 11100  (0x2b5c)  (int)
  battery.voltage.unit = 'mV'  (string)
  battery.reporting.design = 4700  (0x125c)  (int)
  battery.reporting.unit = 'mAh'  (string)
  battery.serial = '1076'  (string)
  battery.present = true  (bool)
  battery.voltage.current = 12712  (0x31a8)  (int)
  battery.reporting.rate = 2765  (0xacd)  (int)
  battery.is_rechargeable = true  (bool)
  battery.rechargeable.is_charging = true  (bool)
  battery.rechargeable.is_discharging = false  (bool)
  battery.reporting.current = 3407  (0xd4f)  (int)
  battery.reporting.last_full = 3963  (0xf7b)  (int)
  battery.charge_level.current = 37817  (0x93b9)  (int)
  info.parent = '/org/freedesktop/Hal/devices/computer'  (string)
  linux.sysfs_path = '/sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0'  (string)
  battery.charge_level.design = 52170  (0xcbca)  (int)
  battery.charge_level.percentage = 85  (0x55)  (int)
  battery.remaining_time = 723  (0x2d3)  (int)
  battery.charge_level.rate = 30691  (0x77e3)  (int)
  battery.charge_level.last_full = 43989  (0xabd5)  (int)
  info.category = 'battery'  (string)
  linux.hotplug_type = 2  (0x2)  (int)

참고하세요우디장치의. 이제 다음을 사용하여 원하는 속성을 쿼리합니다.hal-get-property명령:

$ hal-get-property --udi /org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0 --key "battery.rechargeable.is_discharging"
true

이제 우리는 배터리 상태에 접근하는 방법을 알았습니다. 이것을 데몬과 같은 스크립트에 집어넣으세요. 다음은 폴링 간격을 첫 번째 매개변수로 사용하는 기본 템플릿입니다. 여유 시간에 오류 검사 및 기타 사용하기 좋은 구성을 사용하여 멋지게 꾸밀 수 있습니다.

#!/usr/bin/env perl

my ($sleep_duration) = @ARGV;
print "Sleep:$sleep_duration\n";

do{
        my $status = qx(hal-get-property --udi /org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0 --key "battery.rechargeable.is_discharging");
        if ($status =~ /true/)
        {
                print "On battery power\n";
                # shut down apache
                # shut down mysql
                # shut down postgresql

        }
        sleep $sleep_duration;
} while (true);

스크립트 내에서 시작 스크립트를 사용하여 mysql 등을 깔끔하게 종료해야 합니다.

sudo /etc/init.d/mysqld 중지

이를 어떻게 개선할 수 있나요? 잠시 동안 이것을 실행하고 모든 문제를 해결한 후에는 부팅 시 시작되는 서비스로 만드십시오. 이 답변을 확인하세요여기부팅 시 자동으로 시작되도록 스크립트를 추가하는 방법에 대한 지침을 참조하세요.

이 작업을 수행하지 않기로 결정한 경우 다음을 확인하십시오.질문이 스크립트가 루트 권한이 필요한 명령을 실행하도록 하는 방법에 대한 지침을 참조하세요.

나는 귀하의 질문 중 한 부분에만 답변한 것으로 알고 있습니다. 그러나 유사한 방식으로 무선 섹션을 통합할 수 있어야 합니다. HAL을 사용하여 무선이 비활성화된 시기를 파악하세요.

네트워크에 연결을 시도하는 모든 프로세스를 확인하고 비활성화하는 방법은 확실하지 않지만 다음 명령이 해당 작업에 도움이 될 수 있습니다.

# list all processes using port 80
lsof -i tcp:80

#list programs connected via tcp 
#include -u to include udp connections
sudo netstat -ntp

답변2

laptop-mode-tools당신이 요구하는 것을 할 수 있습니다.

   /etc/laptop-mode/conf.d/start-stop-programs.conf
       시작-중지-프로그램 모듈을 사용하면 프로그램을 시작하거나 중지할 수 있습니다.
       컴퓨터가 다른 전원 상태로 전환될 때.

       CONTROL_START_STOP
                 이 옵션을 활성화하면 노트북 모드 도구가 자동으로
                 데몬이나 기타 프로그램을 자동으로 시작하고 중지합니다. 그만큼
                 데몬이 될 실제 구성
                 중지/시작은 데몬의 초기화에 대한 링크를 배치하여 수행됩니다.
                 다음 디렉터리에 있는 스크립트:

                    /etc/노트북 모드/batt-start

                    /etc/노트북 모드/batt-stop

                    /etc/노트북 모드/lm-ac-start

                    /etc/노트북 모드/lm-ac-stop

                    /etc/노트북 모드/nolm-ac-start

                    /etc/노트북 모드/nolm-ac-stop
                 짐작하셨겠지만, "X-" 형식의 디렉토리가 있습니다.
                 stop-daemons"에는 데몬의 초기화 스크립트가 포함되어 있어야 합니다.
                 모드 X에서 중지하고 싶지만 "X-" 형식의 디렉터리는
                 start-daemons"에는 데몬의 초기화 스크립트가 포함되어야 합니다.
                 모드 X에서 시작하고 싶습니다. 물론 넣을 수도 있습니다.
                 모드를 자체적으로 처리하는 경우에도: 유일한 요구 사항
                 디렉토리의 스크립트에서 다음을 처리한다는 것입니다.
                 init 스크립트에서 일반적으로 수행하는 것과 같은 "start" 및 "stop" 명령입니다.

                 스크립트 처리 순서는 다음과 같습니다. 언제
                 모드에 들어가면 이전 모드의 작업이 취소되고,
                 역순으로. 이는 이전 모드가
                 "daemon1 stop", "daemon2 stop" 및 "daemon3 start"를 수행한 다음
                 실행 취소 작업은 "daemon3 stop", "daemon2 start"입니다.
                 "daemon1 시작". 그 후에는 새 작업에 대한 중지 스크립트가
                 모드가 호출된 다음 시작 스크립트가 호출됩니다.
                 공통점은 발견되지 않으니 주의하세요
                 이 시점에서 모드 사이에, 즉 당신이오고있는 모드가 있다면
                 데몬을 지정하려는 모드와 모드
                 "X"를 중지해야 합니다. 그러면 데몬이 중지 해제됩니다.
                 (즉, 시작됨) 이전 모드를 종료한 후
                 다시 멈췄다.

       BATT_STOP

       BATT_START

       LM_AC_STOP

       LM_AC_START

       NOLM_AC_STOP

       NOLM_AC_START

                 이 옵션을 사용하면 서비스를 중지할 수 있습니다(초기화를 통해).
                 스크립트) 특정 전원 상태에서. 공백으로 구분하여 지정
                 이 옵션의 서비스 이름 목록입니다. 이러한 서비스는
                 디렉토리의 파일과 함께 시작/중지됨
                 위에 언급했듯이.

구성 파일에서 주요 기능(HDD 스핀다운)을 비활성화할 수 있지만 다른 작업은 계속 실행됩니다.

답변3

이 명령을 사용하여 서비스를 중지하거나 시작할 수 있습니다.

sudo /etc/init.d/'preferred services' stop|start|restart

관련 정보