LINUX.ORG.RU

Автозапуск скрипта

 , , ,


0

1

Доброго времени суток.

Имеется скрипт. Если запускать вручную, всё отлично. Однако если его поместить в автозагрузку, желаемый результат не наблюдается.

~ $ cat /etc/rc.local 
#!/bin/sh -e
/usr/sbin/mouse.cfg &> /tmp/mouse.cfg.log
exit 0

Пожалуйста, подскажите, что в моих действиях неверно.

~ $ ls -n /usr/sbin/mouse.cfg 
-rwxr-xr-x 1 1000 1000 231 Jun 13 14:22 /usr/sbin/mouse.cfg

.

Ответ на: комментарий от yars068

systemd, а там rc.local не работает.

systemctl enable rc-local.service, тащемта.

ОП, и поставь /bin/bash вместо sh, чисто на всякий.

entefeed ☆☆☆ ()
Ответ на: комментарий от entefeed

У вас рач мозга.

/usr/lib/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
Иди лечись сынок

arson ★★★★★ ()
Ответ на: комментарий от arson

РАЧ

$ grep -Ev '^#' /lib/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
SysVStartPriority=99
entefeed ☆☆☆ ()
Ответ на: комментарий от yars068

Я новичок, сильно не пинайте. =)

Пакета systemctl нет. То бишь не прованговалось.

~ $ uname -a
Linux rebecca 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

####

Сейчас ещё погуглил...

~ $ cat /etc/rc.local 
#!/bin/sh -e
su -c '/usr/sbin/mouse.cfg &> /tmp/mouse.cfg.log'
exit 0

...и кое-что мне стало уже понятнее:

~ $ cat /tmp/mouse.cfg.log
Unable to connect to X server

Т.е. команды в rc.local выполняются до загрузки иксов (судя по ошибке), соответственно мой скрипт (изменение чувствительности мыши) просто выполнялся вхолостую.

Не подскажите, как выполнять скрипты в определённый момент и как понять когда код уже можно выполнять для определённых задач?

В этой теме описал просто тренировочную для себя задачу на десктопе. А вообще основная задача в следующем: имеется удалённый сервер, на котором необходима автозагрузка висги-сокета.

uwsgi --ini /path/to/uwsgi.ini

Запуск вручную также прекрасно работает. А вот с автозагрузкой у меня пока не лады. =(

x1simba ()
Ответ на: комментарий от arson

Ввиду неопытности вопрос «как запускаются иксы» мне не понятен. =/

####

На декстопе родная, без виртуалки:

~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 17.1 Rebecca
Release:	17.1
Codename:	rebecca
На ней пробую автозапуск скрипта по смене сенса мышки.

####

На удалёнке виртуалка OpenVZ от хостера.

~# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.8 (wheezy)
Release:	7.8
Codename:	wheezy
На ней пробую автозапуск uwsgi-сокета.

x1simba ()
Ответ на: комментарий от dhameoelin

В смысле айдишники висги-процессов интересуют? Вот, пожалуйста:

~# top

top - 11:12:29 up 6 days, 5 min,  1 user,  load average: 0,00, 0,00, 0,00
Tasks:  28 total,   1 running,  27 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy,  0,0 ni,100,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:    262144 total,    66556 used,   195588 free,        0 buffers
KiB Swap:        0 total,        0 used,        0 free,    26304 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND           
    1 root      20   0 30172 1640  944 S   0,0  0,6   0:00.59 init              
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd/5524     
    3 root      20   0     0    0    0 S   0,0  0,0   0:00.00 khelper/5524      
   95 root      20   0 16988  612  392 S   0,0  0,2   0:00.00 upstart-udev-br   
  101 root      20   0 21068  968  644 S   0,0  0,4   0:00.00 udevd             
  137 root      20   0 21064  676  348 S   0,0  0,3   0:00.00 udevd             
  138 root      20   0 21064  676  348 S   0,0  0,3   0:00.00 udevd             
  209 root      20   0 14936  480  260 S   0,0  0,2   0:00.00 upstart-socket-   
 1473 root      20   0  4136  672  508 S   0,0  0,3   0:00.00 rc                
 1514 root      20   0 59340 2084  920 S   0,0  0,8   0:04.25 rsyslogd          
 1549 root      20   0 49888 1228  624 S   0,0  0,5   0:02.51 sshd              
 1569 root      20   0  4136  640  488 S   0,0  0,2   0:00.00 S03rc.local       
 1572 root      20   0  4136  528  436 S   0,0  0,2   0:00.00 rc.local          
 1573 root      20   0 42892 2204 1388 S   0,0  0,8   0:12.50 uwsgi             
 1574 root      20   0  121m  24m 3212 S   0,0  9,4   0:17.50 uwsgi             
 1579 root      20   0  121m  21m  364 S   0,0  8,4   0:00.00 uwsgi             
 1580 root      20   0  121m  21m  364 S   0,0  8,4   0:00.00 uwsgi

x1simba ()
Ответ на: комментарий от x1simba

твой mouse.cfg должен запускаться после запуска X-ов в сессии конкретного пользователя, средсвами конкретного WM/DE (gnome, kde) или в .xinirc при запуске через xinit/startx.

-rwxr-xr-x 1 1000 1000 231 Jun 13 14:22 /usr/sbin/mouse.cfg

смени 1000 на root

что вообще за mouse.cfg?

arson ★★★★★ ()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от arson

С вами тут пообщаться, много нового узнаешь. =)

Да, понимаю, в Linux есть несколько слоёв, в которых реализуется автозагрузка чего бы то ни было.

Т.е. как-то так:

...
rc.local
...
/etc/X11/xinit/xinitrc
...
~.xinitrc
...

и т.д.

Да, в моём случае на десктопе действительно требуется загрузка лишь после запуска иксов.

Скрипт подарил su:

/usr/sbin $ ls -l mouse.cfg 
-rwxr-xr-x 1 root root 232 Jun 13 22:35 mouse.cfg
/usr/sbin $ cat mouse.cfg
#!/bin/sh
xinput set-prop 11 280 -1
xinput set-prop 11 281 3
xinput set-prop 11 283 5

Далее поэксперементировал с этими вещами...

Файла не было, создал.

~ $ cat .xinitrc 
#!/bin/sh
#
# User's .xinitrc file

xclock &
. /usr/sbin/mouse.cfg &> /tmp/mouse.cfg.log
При запуске часы не появились, сэнс мыши не изменился. Если запускать вручную, и часы появляются, и сэнс меняется. Права у файла на владельца хоум 711.

Далее попробовал уровень выше (т.е. непосредственно старт иксов, про который ты написал):

~ $ cat /etc/X11/xinit/xinitrc
#!/bin/sh

# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script
. /etc/X11/Xsession &
. /usr/sbin/mouse.cfg &
xclock
Иксы запускаются, всё прочее нет.

Ещё погуглив в wiki арча вычитал способ ч/з xinitrc.d, т.е. скрипт просто помещается в упомянутую директорию: /etc/X11/xinit/xinitrc.d/mouse.cfg.sh

Этот вариант у меня также не сработал.

Вроде бы всё просто, но что-то у меня не так. Может быть Я где-то ошибку допустил. Не может такого быть, чтобы это не работало.

Ещё ты пишешь про средства конкретного WM/DE. У меня Cinnamon и в ней есть такая штука как Startup Applications Preferences, ч/з которую можно скрипты в автозагрузку добавлять. Да, этот способ работает, но это как раз-таки возможности DE, которой на удалённой машине нет. Очень хотелось бы понять как можно реализовать автозагрузку без помощи DE, т.к. в конечном счёте требуется запуск висги-сокета для работы веб-сервака.

x1simba ()
Ответ на: комментарий от x1simba

в конечном счёте требуется запуск висги-сокета для работы веб-сервака.

Прекрати заниматься онанизмом и осиль документацию к дистрибутиву. В ubuntu есть uwsgid. В твоём раче тоже, скорее всего, есть подобное, ну почитай Вику что ли.

dhameoelin ★★★★★ ()
Ответ на: комментарий от dhameoelin

Да Вы успокойтесь, не надо так переживать. Всё уже давно прочитано здесь и здесь, остался лишь момент с автозагрузкой. Хотите/можете помочь, буду рад. Зашли потроллить, ок, мы рады за вашу невъ***нность, идите дальше.

x1simba ()
Ответ на: комментарий от x1simba

Никто не переживает, кроме тебя. Тролли, ему, видите ли, мерещатся уже... Ты уж решись, что и на каком этапе тебе «автозагружать» надо, а мы скажем, почему это ненужно что ты делаешь не так.

dhameoelin ★★★★★ ()
Ответ на: комментарий от x1simba

Если вам нужно загружать что-то, что работает с X, то делать это нужно средствами DE, а если то, что не работает — средствами системы инициализации (upstart в Ubuntu).

ValdikSS ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.