Автозапуск скрипта после входа пользователя
Доброго дня!
Подскажите куда положить скрипт, что бы он запускался после входа пользователя в систему?
Сейчас этот скрипт лежит в «etc/network/if-ip.d» и запускается после инициализации сетевого интерфейса.
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
Подскажите, как решить проблему.
CrashBldash
New member
blackrook
New member
- хардкорно-олдвейный: создать ~/.xsessionrc и поместить туда имя скрипта. Только не забудьте в конце команды поставить амперсанд («&»), чтобы она выполнялась фоново — иначе загрузка компонентов рабочего стола и панели зависнет, т.к. будет ждать завершения команды, и может вовсе зависнуть, если скрипт по какой-то причине не отработает успешно;
- няшно-современный, т.е. через GUI: «Панель управления» → «Система» ⇒ «Автозапуск».
UPD: Если скрипт должен запускаться при логине у всех пользователей, то сам скрипт, если он работоспособен, можно закинуть в папку /etc/X11/Xsession.d .
blackrook
New member
Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?
Saltoon
New member
Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?
Мне все равно от какого пользователя это будет. Нужно, что бы user имел доступ к этим файлам и мог изменять их.
oko
New member
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
На этом модуль экстрасенсорики перегрелся.
Раскройте мысль, а то пока суть проблема не ясна (+1 к тов. blackrook в тему демона-службы).
Saltoon
New member
Saltoon
New member
Есть скрипт. Он удаляет из 3 папок все файлы. Далее копирует из смонтированных сетевых папок файлы взамен тех, что удалил.
Все это делаться под root.
Поэтому user не имеет доступа к этим файлам.
Saltoon
New member
chmod -R 777 /home/user/нужная папка/
blackrook
New member
Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.
oko
New member
to Saltoon
Вместо chmod -R 777 полный_путь_к_каталогу (дать дискреционные права Запись+Чтение+Исполнение всем и вся) лучше уж chown -R имя_пользователя полный_путь_к_каталогу
В противном случае рискуете нарваться на «лихие руки» оконечных пользователей.
Вообще, ваш способ мало чем отличается (в контексте озвученной задачи) от создания systemd-сервиса (Гугл в помощь по части systemd). Как бы раньше, до systemd, большинство способов и сводилось к тому, чтобы sh-скрипт подкинуть какому-нибудь существующему сервису, стартующему при загрузке системы (например, /etc/rc.local). Сейчас это несколько «окультурилось», хотя для мелких задач, imho, писать полноценные systemd-сервисы куда муторнее, чем подсунуть в нужное место sh-скрипт.
И да, rsync больше для инкрементального копирования или синхронизации расхождений, чем для задачи «полной перезаписи».
И вообще, золотое правило: если нет времени/возможности изучить нечто неизведанное ранее, лучше использовать те инструменты, которые знаешь и понимаешь. Во всяком случае, в «боевой обстановке», ага.
Saltoon
New member
Не думаю, что такое возможно. Пользователи впервые увидят это систему (пока идет стадия настроек, обкатка) и вряд ли смогут что либо повредить. Файлы нужны для DOS приложения и кроме него, приложения, к этим папкам никто не ходит. Приложение запускается под user.
Даже в случае повреждения этих файлов, запускается скрипт, и с сервера копируются новые файлы. Обновление происходит ежедневно в конце рабочего дня.
oko
New member
to Saltoon
Даже самый долгий дорог начинается с первый шаг (с)
Так что я бы не брезговал юзать chown вместо chmod в вашем случае. Тем более, что трудозатраты по настройке не сильно различаются, ага.
Saltoon
New member
Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.
Проблема решена, но я попробую объяснить как организован процесс.
Есть программа с базой данных. Программа старая, написана пот DOS еще в мохнатом году. На сегодняшний день внедряется новая и по плану этот процесс растянут на 3 года, но не в этом дело. Еще 3 года нужно будет поддерживать работоспособность старой программы, а возможно и больше.
Теперь собственно к процессу работы с программой и БД к ней.
В течении дня вносятся изменения в базу данных, которые сохраняются в буфере. В конце дня с машины администратора вносятся изменения в БД на сервере. В начале следующего дня при включении компов заменяются файлы БД на локальных дисках. (Удаляются старые и копируются новые с сервера). Для этого на компах в автозагрузке есть батник (батник в Windows под Астру переделал его в «bash»), который все это делает. Все это придумано не мной, я лишь поддерживаю эту систему в работоспособном состоянии.)) Задача была внедрить новые компы под Астрой в эту систему. Компы поставляются централизованно, не моя прихоть. Программа «rsync» как я понял синхронизирует нужные папки в реальном времени. В этом нет необходимости. У пользователя обновленная (вчерашняя) база. А все изменения за сегодня, он увидит на следующий день, т.к. обновление БД производится вручную в конце рабочего дня. В автоматическом режиме обновлять БД нет технической возможности, так построена работа с этой программой. Как то так. Надеюсь все понятно изложил.
Как в ОС Astra Linux добавить программу в автозапуск
Для удобства многие пользователи добавляют часто используемые приложения и программы в автозагрузку операционной системы, благодаря этому сразу после запуска ОС можно приступать к работе, не тратя время на ручной запуск необходимых программ. Автозагрузка есть в любой ОС, в том числе и в Astra Linux. Настроить автозагрузку в ОС Astra можно несколькими способами, сегодня рассмотрим самый простой вариант, с помощью которого сделать это сможет любой пользователь, да же не самый опытный.
Автоматический запуск программ после загрузки ОС
Добавить в автозагрузку можно любую программу, например, браузер, офисное приложение, почтовый клиент и т.д. В сегодняшней статье в качестве примера возьмем браузер «Firefox» .
Для начала необходимо открыть «Панель управления» через главное меню.
Далее в открывшемся окне открываем раздел «Система» и ищем пункт «Автозапуск».
Теперь с помощью пункта «Добавить приложение» ищем необходимое в списке, в нашем случае это будет браузер «Firefox» и жмем «Да».
Остается только применить настройки, перезагрузить систему и проверить запускается ли добавление приложение.
Есть еще одна вкладку «Общесистемный автозапуск», там добавляются и запускаются системные приложения, например, «Сеть» которая отвечает за значок в трее, если её отключить то он не будет отображаться. Вообще тут лучше ничего не менять, особенно если в этом нет понимания.
Вот таким образом в операционной системе Astra Linux можно добавить программу в автозагрузку, как видите в этом нет ничего сложного, но если остались вопросы то обязательно спрашивайте!
Как добавить программу в автозагрузку Linux Astra через терминал?
Друзья, продолжаем изучение отечественной операционной системы Astra Linux. Очередь дошла до пользовательских программ. Сегодня расскажу о самых очевидных способах добавления или удаления программ из автозапуска в Linux.
Большинство пользовательских программ, таких как torrent клиент (или яндекс браузер) можно добавить в автозагрузку через меню «Пуск»- «Панель управления». Знакомо, не правда ли?
Открыв оснастку мы увидим список программ. Недавно мы с вами делали скриншоты в linux и устанавливали для этого программу Shutter. Можно установить флажок напротив нее и тем самым, добавить ее в автозапуск:
Не все программы, установленные в Astra Linux попали в список Автозапуска. Например, торрент клиент. Как добавить торрент в автозагрузку?
Первый способ — через меню автозапуска:
Файлы устанавливаемых программ попадают в папки /bin. По сути мы сейчас должны добавить команду на запуск:
Можно здесь же прописать команды на запуск в терминале. Имя команды всегда можно посмотреть в свойствах ярлыка нужной программы в меню или на рабочем столе. Не забываем указать имя приложения, чтобы в списке было понятно, и ярлык можно выбрать
Если программы устанавливаются в качестве службы, то их автозапуск можно определять командой systemctl
смотреть список уже запущенных служб можно так:
systemctl list-unit-files | grep enabled
Список неработающих служб выводим так:
systemctl list-unit-files | grep disabled
Добавить службу в автоЗапуск вместе с ситстемой можно так:
systemctl enable «имя службы»
Отключение запуска служб вместе с системой:
systemctl disable «имя службы»
Останов запущенной службы принудительно:
systemctl start «имя службы»
Запуск остановленной службы принудительно:
Удаление программы из списка автозапуска в Linux Astra происходит легко и привычно:
Можно достаточно гибко настраивать автозапуск, используя команду sleep. Очень простая в использовании и полезная вещь, когда требуется тонкая настройка.
Если вам нужно отсрочить запуск нужной программы — указываем число секунд ( минут m, часов h, d дней) задержки:
Способов настройки автозапуска достаточно много. Можно настраивать его даже на уровне запуска ядра. Но это материал других статей, все это подробно мы еще изучим! Удачи!