Có cách nào để biết tại sao một dịch vụ được khởi động lại không và ai đã làm điều đó?


10
  • Ubuntu 14.04
  • ngao 0,98,7

Vấn đề được clamav-daemonkhởi động lại gần như hàng ngày:

Sep  1 06:30:00 x-master clamd[6778]: Pid file removed.
clamd[6778]: --- Stopped at Tue Sep  1 06:30:00 2015
clamd[5979]: clamd daemon 0.98.7 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
clamd[5979]: Running as user root (UID 0, GID 0)
clamd[5979]: Log file size limited to 4294967295 bytes.
clamd[5979]: Reading databases from /var/lib/clamav
clamd[5979]: Not loading PUA signatures.
clamd[5979]: Bytecode: Security mode set to "TrustSigned".

Nó gây ra sự cố nếu clamdscanđang chạy:

/etc/cron.daily/clamav_scan:
ERROR: Could not connect to clamd on x.x.x.x: Connection refused

Lưu ý rằng tôi đã nói "gần như" lúc đầu:

/var/log/syslog:Sep  1 06:30:00 x-master clamd[6778]: Pid file removed.
/var/log/syslog.1:Aug 31 06:27:54 x-master clamd[20128]: Pid file removed.
/var/log/syslog.4.gz:Aug 28 06:28:34 x-master clamd[4475]: Pid file removed.
/var/log/syslog.5.gz:Aug 27 06:27:47 x-master clamd[21466]: Pid file removed.

Bạn có thể thấy:

  • nó đã không xảy ra vào ngày 29 và 30 tháng 8
  • nó thường được khởi động lại vào khoảng 06:27, đó là thời gian cron.dailyđược chạy

    27 6 * * * root nice -n 19 ionice -c3 run-parts --report /etc/cron.daily
    

Nội dung của /etc/cron.daily/clamav_scan:

find / $exclude_string ! \( -path "/tmp/clamav-*.tmp" -prune \) ! \( -path "/var/lib/elasticsearch" -prune \) ! \( -path "/var/lib/mongodb" -prune \) ! \( -path "/var/lib/graylog-server" -prune \) -mtime -1 -type f -print0 | xargs -0 clamdscan --quiet -l "$status_file" || retval=$?

Có một tệp logrotate cho clamav-daemon:

/var/log/clamav/clamav.log {
     rotate 12
     weekly
     compress
     delaycompress
     create 640  clamav adm
     postrotate
     /etc/init.d/clamav-daemon reload-log > /dev/null
     endscript
     }

nhưng nó chỉ tải lại nhật ký:

Sep  1 02:30:24 uba-master clamd[6778]: SIGHUP caught: re-opening log file.

Tôi biết rằng chúng ta có thể sử dụng auditdđể theo dõi tệp nhị phân và đây là nhật ký mẫu:

ausearch -f /usr/sbin/clamd                                                                                                        [2/178]
----
time->Tue Sep  1 07:56:44 2015
type=PATH msg=audit(1441094204.559:15): item=1 name=(null) inode=2756458 dev=fc:00 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1441094204.559:15): item=0 name="/usr/sbin/clamd" inode=3428628 dev=fc:00 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1441094204.559:15):  cwd="/"
type=EXECVE msg=audit(1441094204.559:15): argc=1 a0="/usr/sbin/clamd"
type=SYSCALL msg=audit(1441094204.559:15): arch=c000003e syscall=59 success=yes exit=0 a0=7ffd277e03dc a1=7ffd277dfa78 a2=7ffd277dfa88 a3=7ffd277df570 items=2
 ppid=5708 pid=5946 auid=4294967295 uid=109 gid=114 euid=109 suid=109 fsuid=109 egid=114 sgid=114 fsgid=114 tty=pts1 ses=4294967295 comm="clamd" exe="/usr/sbin/clamd" key=(null)

109 là UID của ... clamavngười dùng:

getent passwd clamav clamav:x:109:114::/var/lib/clamav:/bin/false

Có cách nào khác để khắc phục sự cố trong trường hợp này không?


Trả lời @HBruijn:

Có thể Freshclam sau khi cập nhật định nghĩa AV?

Tôi nghĩ về nó. Đây là nhật ký:

Sep  1 05:31:04 x-master freshclam[16197]: Received signal: wake up
Sep  1 05:31:04 x-master freshclam[16197]: ClamAV update process started at Tue Sep  1 05:31:04 2015
Sep  1 05:31:04 x-master freshclam[16197]: main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Sep  1 05:31:05 x-master freshclam[16197]: Downloading daily-20865.cdiff [100%]
Sep  1 05:31:09 x-master freshclam[16197]: daily.cld updated (version: 20865, sigs: 1555338, f-level: 63, builder: neo)
Sep  1 05:31:10 x-master freshclam[16197]: bytecode.cvd is up to date (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Sep  1 05:31:13 x-master freshclam[16197]: Database updated (3979610 signatures) from db.local.clamav.net (IP: 168.143.19.95)
Sep  1 05:31:13 x-master freshclam[16197]: Clamd successfully notified about the update.
Sep  1 05:31:13 x-master freshclam[16197]: --------------------------------------
Sep  1 04:34:10 x-master clamd[6778]: SelfCheck: Database status OK.
Sep  1 05:31:13 x-master clamd[6778]: Reading databases from /var/lib/clamav
Sep  1 05:31:22 x-master clamd[6778]: Database correctly reloaded (3974071 signatures)

Tôi không chắc chắn về điều này nhưng có vẻ như Freshclam có một "cơ chế nội bộ" để thông báo cho clamd về bản cập nhật. Và sau đó, nó chỉ có thể tải lại cơ sở dữ liệu, không cần phải khởi động lại quá trình. Bạn có thể xác nhận?

Hơn nữa, từ dấu thời gian, tôi thấy rằng clamav-daemon đã khởi động lại sau khi cập nhật cơ sở dữ liệu Freshclam một giờ. Nó có bình thường không?


CẬP NHẬT Thứ ba ngày 1 tháng 9, 22:10:49 CNTT 2015

nhưng có vẻ như Freshclam có một "cơ chế nội bộ" để thông báo cho clamd về bản cập nhật. Và sau đó, nó chỉ có thể tải lại cơ sở dữ liệu, không cần phải khởi động lại quá trình.

Tôi có thể xác nhận điều này là đúng bằng cách làm một bài kiểm tra:

  • chỉnh sửa tệp Freshclam.conf để thay đổi khoảng thời gian thành một phút ( Checks 1440)
  • khởi động lại clamav-Freshclam
  • cd / var / lib / clamav
  • rm hàng ngày.cvd
  • chờ một phút

    Sep  1 14:49:25 p freshclam[7654]: Downloading daily.cvd [100%]
    Sep  1 14:49:28 p freshclam[7654]: daily.cvd updated (version: 19487, sigs: 1191913, f-level: 63, builder: neo)
    Sep  1 14:49:28 p freshclam[7654]: Reading CVD header (bytecode.cvd):
    Sep  1 14:49:28 p freshclam[7654]: OK
    Sep  1 14:49:28 p freshclam[7654]: bytecode.cvd is up to date (version: 245, sigs: 43, f-level: 63, builder: dgoddard)
    Sep  1 14:49:31 p freshclam[7654]: Database updated (3616181 signatures) from clamav.local (IP: 10.0.2.2)
    Sep  1 14:49:31 p freshclam[7654]: Clamd successfully notified about the update.
    Sep  1 14:49:31 p freshclam[7654]: --------------------------------------
    Sep  1 14:49:32 p clamd[6693]: Reading databases from /var/lib/clamav
    Sep  1 14:49:39 p clamd[6693]: Database correctly reloaded (3610621 signatures)
    

và clamav-daemon không được khởi động lại.


Tôi đã trả lời trong câu hỏi ban đầu.
lượng tử

1
Không chắc lắm, do đó, bình luận dự kiến ​​của tôi chứ không phải là một câu trả lời đầy đủ ...
HBruijn

1
Có thể thử tìm quá trình xóa tập tin clamav pid? askubuntu.com/questions/48844/...
strangeman

2
Bạn không sử dụng bất kỳ hệ thống quản lý cấu hình nào như con rối, đầu bếp, cengine, có thể can thiệp?
Soumyadip DM

2
@SoumyadipDM: Bạn đã lưu ngày của tôi. Hãy gửi bình luận của bạn như một câu trả lời, tôi sẽ chấp nhận nó và đưa cho bạn một tiền thưởng: D.
lượng tử

Câu trả lời:


7

Vui lòng kiểm tra xem bạn có đang sử dụng bất kỳ hệ thống quản lý cấu hình nào không, ví dụ như Puppet, Chef, CFEngine, v.v. Họ có thể can thiệp vào các dịch vụ theo định kỳ. Đối với hành động chính xác được thực hiện để khắc phục điều này phụ thuộc vào cách sử dụng dịch vụ trong hệ thống quản lý cấu hình.


5

Lưu ý với bản thân mình.

Đầu ra từ bộ đệm công việc:

----------
          ID: clamav-daemon
    Function: service.running
      Result: True
     Comment: Service restarted
     Started: 06:27:52.736890
    Duration: 12997.632 ms
     Changes:
              ----------
              clamav-daemon:
                  True

Nhìn vào công thức clamav:

  clamav-daemon:
    service:
      - running
      - order: 50
      - require:
        - service: clamav-freshclam
      - watch:
        - pkg: clamav-daemon
        - file: clamav-daemon
        - user: clamav

Không có gì ở các watchbang ed được thay đổi:

----------
          ID: clamav-daemon
    Function: pkg.latest
      Result: True
     Comment: Package clamav-daemon is already up-to-date.
     Started: 06:27:51.531415
    Duration: 53.224 ms
     Changes:

----------
          ID: clamav-daemon
    Function: file.managed
        Name: /etc/clamav/clamd.conf
      Result: True
     Comment: File /etc/clamav/clamd.conf is in the correct state
     Started: 06:27:51.760019
    Duration: 625.075 ms
     Changes:

----------
          ID: clamav
    Function: user.present
      Result: True
     Comment: User clamav is present and up to date
     Started: 06:27:51.590214
    Duration: 2.455 ms
     Changes:

Tại sao dịch vụ đã được khởi động lại?

Tìm kiếm watch_in, tôi tìm thấy trạng thái quản lý tệp pid và dịch vụ sẽ được khởi động lại nếu tệp pid bị thay đổi:

{%- macro manage_pid(path, user, group, watch_in_service, mode=644) -%}
    {%- if salt['file.file_exists'](path) %}
{{ path }}:
  file:
    - managed
    - user: {{ user }}
    - group: {{ group }}
    - mode: {{ mode }}
    - replace: False
        {%- if caller is defined -%}
            {%- for line in caller().split("\n") -%}
                {%- if loop.first %}
    - require:
                {%- endif %}
{{ line|trim|indent(6, indentfirst=True) }}
            {%- endfor -%}
        {%- endif %}
    - watch_in:
      - service: {{ watch_in_service }}
    {%- else %}
# {{ path }} does not exist, no need to manage
    {%- endif -%}
{%- endmacro -%}

{%- call manage_pid('/var/run/clamav/clamd.pid', 'clamav', 'clamav', 'clamav-daemon', 664) %}
- pkg: clamav-daemon
{%- endcall %}

Trong đầu ra của salt-run jobs.lookup_jid <job id number>, tôi đã thấy điều này:

----------
          ID: /var/run/clamav/clamd.pid
    Function: file.managed
      Result: True
     Comment:
     Started: 06:27:52.392555
    Duration: 2.364 ms
     Changes:
              ----------
              group:
                  clamav
              user:
                  clamav

Vì vậy, chủ sở hữu / nhóm của tệp pid đó đã được thay đổi thành clamav. Cuối cùng, tôi tìm thấy lý do là clamav daemon đang chạy ở chế độ mạng với tư cách là rootngười dùng. Do đó, tệp pid đã được tạo như root. Vì vậy, trạng thái quản lý tệp pid phải được thay đổi thành một cái gì đó như:

{%- call manage_pid('/var/run/clamav/clamd.pid', 'root', 'root', 'clamav-daemon', 664) %}
- pkg: clamav-daemon
{%- endcall %}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.