Watchdog: ์žก์„ ์ˆ˜ ์—†๋Š” OSError: ๊ถŒํ•œ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2011๋…„ 10์›” 10์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gorakhargosh/watchdog

์•ˆ๋…•ํ•˜์„ธ์š”,

๋‚˜๋Š” watchdog์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ƒˆ ํŒŒ์ผ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ž๋™ ์ฒ˜๋ฆฌ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ํŠน์ • ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๊ณ  ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. watchdog์— ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๊นŒ?

์•„๋ž˜๋Š” ์—ญ์ถ”์ ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

ํ—ค๋ฅด๋‚œ

  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 530, in **bootstrap_inner
    self.run()
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/api.py", line 192, in run
    self.queue_events(self.timeout)
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 703, in queue_events
    new_snapshot)
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 548, in _queue_dirs_modified
    self.queue_event(DirCreatedEvent(directory_created))
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 520, in queue_event
    self._register_kevent(event.src_path, event.is_directory)
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 470, in _register_kevent
    self._descriptors.add(path, is_directory)
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 257, in add
    self._add_descriptor(KeventDescriptor(path, is_directory))
  File "/Users/X/Documents/code/envs/Y/lib/python2.7/site-packages/watchdog/observers/kqueue.py", line 342, in __init**
    self._fd = os.open(path, WATCHDOG_OS_OPEN_FLAGS)
OSError: [Errno 13] Permission denied: '/Users/X/Public/Y/FOLDER'

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ทธ๋ž˜์„œ, ์–ด, ์ด ๋ฌธ์ œ๋Š” 2011๋…„๋ถ€ํ„ฐ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ์ด repo์˜ ์†Œ์œ ์ž๊ฐ€ ๋” ์ด์ƒ Watchdog์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚˜๋„ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค๋‹ค.

@gorakhargosh ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์ฝ๊ฑฐ๋‚˜ ๋‚˜์—ดํ•  ์ˆ˜ ์—†๋Š” ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ์‹œ๋ฅผ ์ฒ˜์Œ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ inotify์—๋„ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฝ์„ ๊ถŒํ•œ์ด ์—†๋Š” ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด inotify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/djsupervisor/management/commands/supervisor.py", line 163, in run_from_argv
    return super(Command,self).run_from_argv(argv)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/djsupervisor/management/commands/supervisor.py", line 186, in handle
    return method(cfg_file,*args[1:],**options)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/djsupervisor/management/commands/supervisor.py", line 264, in _handle_autoreload
    observer.start()
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/api.py", line 255, in start
    emitter.start()
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/utils/__init__.py", line 111, in start
    self.on_thread_start()
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify.py", line 121, in on_thread_start
    self._inotify = InotifyBuffer(path, self.watch.is_recursive)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify_buffer.py", line 35, in __init__
    self._inotify = Inotify(path, recursive)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify_c.py", line 187, in __init__
    self._add_dir_watch(path, recursive, event_mask)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify_c.py", line 371, in _add_dir_watch
    self._add_watch(full_path, mask)
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify_c.py", line 385, in _add_watch
    Inotify._raise_error()
  File "/home/roger/.virtualenvs/fdw/local/lib/python2.7/site-packages/watchdog/observers/inotify_c.py", line 406, in _raise_error
    raise OSError(os.strerror(err))
OSError: Permission denied

๊ทธ๋ž˜์„œ, ์–ด, ์ด ๋ฌธ์ œ๋Š” 2011๋…„๋ถ€ํ„ฐ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ์ด repo์˜ ์†Œ์œ ์ž๊ฐ€ ๋” ์ด์ƒ Watchdog์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚˜๋„ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค๋‹ค.

@gorakhargosh ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์™€, ์ด ๋ฌธ์ œ๋Š” ๊ฝค ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

[...] watchdog์— ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๊นŒ?

ํ˜„์žฌ๋กœ์„œ๋Š” ๋น„์žฌ๊ท€์  ๊ฐ์‹œ์ž๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์ฝ”๋“œ์— ์ƒ๋‹นํžˆ ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ๊ฐ์‹œ์ž ์ƒ์„ฑ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๋ฌธ์ œ์ด์ž ์ด๋ฏธํ„ฐ ์ฒ˜๋ฆฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธˆ์ง€๋œ ์•ก์„ธ์Šค๊ฐ€ ์–ธ์ œ๋“ ์ง€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค( chmod , chown ๋˜๋Š” SELinux ๋„๊ตฌ ์‚ฌ์šฉ). ). API์—์„œ (๋”๋Ÿฌ์šด ํ•ดํ‚น ์™ธ์—) ์–ด๋–ป๊ฒŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋งˆ๋„ errno.EACCES (#459๋ฅผ ์ƒ๊ฐ๋‚˜๊ฒŒ ํ•จ)๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ถ€ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜์—ฌ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ๋‚˜๋จธ์ง€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฐ์‹œ๋ฅผ ๊ธˆ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋˜ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ... ์‚ฌ์šฉ์ž๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ 700์ด๊ณ , ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ์‹œ๋œ ํŠธ๋ฆฌ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถฉ๋Œํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. chmod 755๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ œ ์›Œ์น˜๋… ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ผ์ข…์˜ os-error๋ฅผ ์ถ”๊ฐ€ ์ด๋ฒคํŠธ๋กœ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž๋Š” ๊ทธ๊ฒƒ์œผ๋กœ ๋ฌด์—‡์„ ํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•„๋งˆ๋„ ๊ฐ€์žฅ ๊นจ๋—ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰