Вопрос в том, как вернуться к Ubuntu из Kubuntu, затем установить LXDE, а затем:
http://www.psychocats.net/ubuntu/purelxde
Если вы были желая просто Ubuntu: http://www.psychocats.net/ubuntu/purelxde
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить следующее в User data
:
#cloud-config
runcmd:
- /usr/bin/command1.sh
- /usr/bin/command2.sh
Вывод будет записаться в /var/log/cloud-init-output.log
Cloud-init
может сделать гораздо больше, чем это. Он разработан специально для ранней инициализации облачных экземпляров. Смотрите документы здесь: http://cloudinit.readthedocs.io/en/latest/index.html
Я удивлен результатами, которые я вижу при поиске четко определенного и поддерживаемого хука Ubuntu «первая загрузка». Похоже, толпа Red Hat / Fedora / CentOS уже более десяти лет добивается этого. Наиболее близким эквивалентом Ubuntu является oem-config-firstboot .
Идея простого выполнения rm $0
будет работать. Но, технически, есть некоторая интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix, сценарий оболочки читается и обрабатывается по одной строке / инструкции за раз. Если вы отсоедините (rm
) файл из-под него, то экземпляр оболочки, который обрабатывает этот скрипт, теперь работает с анонимным файлом (любым файлом, который открыт, но не связан).
Рассмотрим файл, подобный следующему:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <<COMMENTARY
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
COMMENTARY
exec $0
Если вы сохраните это как что-то вроде rmself.sh
и (жесткую) ссылку, что-то вроде tst
, то запуск ./tst
должен показать что-то вроде этого в качестве вывода:
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть несколько странных возможных угловых случаев в отношении символических ссылок и случаев, когда скрипт вызывался как голое имя (заставляя оболочку искать сценарий в $PATH
.
Но, похоже, что bash
(по крайней мере, в версии 3.2) добавляет в $0
путь, если он искал путь, и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, использованного для вызова скрипта. Кажется, он не делает никаких нормализаций или разрешений относительно путей или символических ссылок.
Вероятно, наиболее чистой «первой загрузкой» для Ubuntu было бы создание небольшого пакета (.deb), содержащего скрипт, который будет помещен в /etc/init.d/firstboot
и пост-установочный скрипт, который использует update-rc.d
, чтобы связать его с уровнем запуска 1 (/etc/rc1.d
) (с помощью команды, подобной: update-rc.d firstboot defaults
) ... ... а затем попросить последнюю строку выполнить деактивацию или удалить, используя что-то например: update-rc.d firstboot disable
Вот ссылка на Debian update-rc.d HOWTO
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /usr/local/bin/firstboot.sh
ставьте его в конце /etc/rc.local
(этот скрипт запускается при каждой загрузке).
Вы можете сделать резервную копию текущего rc.local на rc.local.bak
Затем вы можете получить то, что хотите сделать в rc.local, а в конце просто mv /etc/rc.loca. bak /etc/rc.local.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить следующее в User data
:
#cloud-config
runcmd:
- /usr/bin/command1.sh
- /usr/bin/command2.sh
Вывод будет записаться в /var/log/cloud-init-output.log
Cloud-init
может сделать гораздо больше, чем это. Он разработан специально для ранней инициализации облачных экземпляров. Смотрите документы здесь: http://cloudinit.readthedocs.io/en/latest/index.html
Я удивлен результатами, которые я вижу при поиске четко определенного и поддерживаемого хука Ubuntu «первая загрузка». Похоже, толпа Red Hat / Fedora / CentOS уже более десяти лет добивается этого. Наиболее близким эквивалентом Ubuntu является oem-config-firstboot .
Идея простого выполнения rm $0
будет работать. Но, технически, есть некоторая интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix, сценарий оболочки читается и обрабатывается по одной строке / инструкции за раз. Если вы отсоедините (rm
) файл из-под него, то экземпляр оболочки, который обрабатывает этот скрипт, теперь работает с анонимным файлом (любым файлом, который открыт, но не связан).
Рассмотрим файл, подобный следующему:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <<COMMENTARY
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
COMMENTARY
exec $0
Если вы сохраните это как что-то вроде rmself.sh
и (жесткую) ссылку, что-то вроде tst
, то запуск ./tst
должен показать что-то вроде этого в качестве вывода:
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть несколько странных возможных угловых случаев в отношении символических ссылок и случаев, когда скрипт вызывался как голое имя (заставляя оболочку искать сценарий в $PATH
.
Но, похоже, что bash
(по крайней мере, в версии 3.2) добавляет в $0
путь, если он искал путь, и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, использованного для вызова скрипта. Кажется, он не делает никаких нормализаций или разрешений относительно путей или символических ссылок.
Вероятно, наиболее чистой «первой загрузкой» для Ubuntu было бы создание небольшого пакета (.deb), содержащего скрипт, который будет помещен в /etc/init.d/firstboot
и пост-установочный скрипт, который использует update-rc.d
, чтобы связать его с уровнем запуска 1 (/etc/rc1.d
) (с помощью команды, подобной: update-rc.d firstboot defaults
) ... ... а затем попросить последнюю строку выполнить деактивацию или удалить, используя что-то например: update-rc.d firstboot disable
Вот ссылка на Debian update-rc.d HOWTO
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /usr/local/bin/firstboot.sh
ставьте его в конце /etc/rc.local
(этот скрипт запускается при каждой загрузке).
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Вы можете сделать резервную копию текущего rc.local на rc.local.bak
Затем вы можете получить то, что хотите сделать в rc.local, а в конце просто mv /etc/rc.loca. bak /etc/rc.local.
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить следующее в User data
:
#cloud-config
runcmd:
- /usr/bin/command1.sh
- /usr/bin/command2.sh
Вывод будет записаться в /var/log/cloud-init-output.log
Cloud-init
может сделать гораздо больше, чем это. Он разработан специально для ранней инициализации облачных экземпляров. Смотрите документы здесь: http://cloudinit.readthedocs.io/en/latest/index.html
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /usr/local/bin/firstboot.sh
ставьте его в конце /etc/rc.local
(этот скрипт запускается при каждой загрузке).
Я удивлен результатами, которые я вижу при поиске четко определенного и поддерживаемого хука Ubuntu «первая загрузка». Похоже, толпа Red Hat / Fedora / CentOS уже более десяти лет добивается этого. Наиболее близким эквивалентом Ubuntu является oem-config-firstboot .
Идея простого выполнения rm $0
будет работать. Но, технически, есть некоторая интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix, сценарий оболочки читается и обрабатывается по одной строке / инструкции за раз. Если вы отсоедините (rm
) файл из-под него, то экземпляр оболочки, который обрабатывает этот скрипт, теперь работает с анонимным файлом (любым файлом, который открыт, но не связан).
Рассмотрим файл, подобный следующему:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <<COMMENTARY
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
COMMENTARY
exec $0
Если вы сохраните это как что-то вроде rmself.sh
и (жесткую) ссылку, что-то вроде tst
, то запуск ./tst
должен показать что-то вроде этого в качестве вывода:
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть несколько странных возможных угловых случаев в отношении символических ссылок и случаев, когда скрипт вызывался как голое имя (заставляя оболочку искать сценарий в $PATH
.
Но, похоже, что bash
(по крайней мере, в версии 3.2) добавляет в $0
путь, если он искал путь, и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, использованного для вызова скрипта. Кажется, он не делает никаких нормализаций или разрешений относительно путей или символических ссылок.
Вероятно, наиболее чистой «первой загрузкой» для Ubuntu было бы создание небольшого пакета (.deb), содержащего скрипт, который будет помещен в /etc/init.d/firstboot
и пост-установочный скрипт, который использует update-rc.d
, чтобы связать его с уровнем запуска 1 (/etc/rc1.d
) (с помощью команды, подобной: update-rc.d firstboot defaults
) ... ... а затем попросить последнюю строку выполнить деактивацию или удалить, используя что-то например: update-rc.d firstboot disable
Вот ссылка на Debian update-rc.d HOWTO
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить следующее в User data
:
#cloud-config
runcmd:
- /usr/bin/command1.sh
- /usr/bin/command2.sh
записаться в /var/log/cloud-init-output.log
Cloud-init
может сделать гораздо больше, чем это. Он разработан специально для ранней инициализации облачных экземпляров. Смотрите документы здесь: http://cloudinit.readthedocs.io/en/latest/index.html
Вы можете сделать резервную копию текущего rc.local на rc.local.bak
Затем вы можете получить то, что хотите сделать в rc.local, а в конце просто mv /etc/rc.loca. bak /etc/rc.local.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Я удивлен результатами, которые я вижу при поиске четко определенного и поддерживаемого хука Ubuntu «первая загрузка». Похоже, толпа Red Hat / Fedora / CentOS уже более десяти лет добивается этого. Наиболее близким эквивалентом Ubuntu является oem-config-firstboot .
Идея простого выполнения rm $0
будет работать. Но, технически, есть некоторая интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix, сценарий оболочки читается и обрабатывается по одной строке / инструкции за раз. Если вы отсоедините (rm
) файл из-под него, то экземпляр оболочки, который обрабатывает этот скрипт, теперь работает с анонимным файлом (любым файлом, который открыт, но не связан).
Рассмотрим файл, подобный следующему:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <<COMMENTARY
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
COMMENTARY
exec $0
Если вы сохраните это как что-то вроде rmself.sh
и (жесткую) ссылку, что-то вроде tst
, то запуск ./tst
должен показать что-то вроде этого в качестве вывода:
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть несколько странных возможных угловых случаев в отношении символических ссылок и случаев, когда скрипт вызывался как голое имя (заставляя оболочку искать сценарий в $PATH
.
Но, похоже, что bash
(по крайней мере, в версии 3.2) добавляет в $0
путь, если он искал путь, и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, использованного для вызова скрипта. Кажется, он не делает никаких нормализаций или разрешений относительно путей или символических ссылок.
Вероятно, наиболее чистой «первой загрузкой» для Ubuntu было бы создание небольшого пакета (.deb), содержащего скрипт, который будет помещен в /etc/init.d/firstboot
и пост-установочный скрипт, который использует update-rc.d
, чтобы связать его с уровнем запуска 1 (/etc/rc1.d
) (с помощью команды, подобной: update-rc.d firstboot defaults
) ... ... а затем попросить последнюю строку выполнить деактивацию или удалить, используя что-то например: update-rc.d firstboot disable
Вот ссылка на Debian update-rc.d HOWTO
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт /usr/local/bin/firstboot.sh
, ставьте его в конце /etc/rc.local
(этот скрипт запускается при каждой загрузке), скрипты выглядят так
#!/bin/bash FLAG="/var/log/firstboot.log" if [ ! -f $FLAG ]; then #Put here your initialization sentences echo "This is the first boot" #the next line creates an empty file so it won't run the next boot touch $FLAG else echo "Do nothing" fi
Вы можете сделать резервную копию текущего rc.local на rc.local.bak
Затем вы можете получить то, что хотите сделать в rc.local, а в конце просто mv /etc/rc.loca. bak /etc/rc.local.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить следующее в User data
:
#cloud-config
runcmd:
- /usr/bin/command1.sh
- /usr/bin/command2.sh
Вывод будет записаться в /var/log/cloud-init-output.log
Cloud-init
может сделать гораздо больше, чем это. Он разработан специально для ранней инициализации облачных экземпляров. Смотрите документы здесь: http://cloudinit.readthedocs.io/en/latest/index.html
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /usr/local/bin/firstboot.sh
ставьте его в конце /etc/rc.local
(этот скрипт запускается при каждой загрузке).
Я удивлен результатами, которые я вижу при поиске четко определенного и поддерживаемого хука Ubuntu «первая загрузка». Похоже, толпа Red Hat / Fedora / CentOS уже более десяти лет добивается этого. Наиболее близким эквивалентом Ubuntu является oem-config-firstboot .
Идея простого выполнения rm $0
будет работать. Но, технически, есть некоторая интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix, сценарий оболочки читается и обрабатывается по одной строке / инструкции за раз. Если вы отсоедините (rm
) файл из-под него, то экземпляр оболочки, который обрабатывает этот скрипт, теперь работает с анонимным файлом (любым файлом, который открыт, но не связан).
Рассмотрим файл, подобный следующему:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <<COMMENTARY
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
COMMENTARY
exec $0
Если вы сохраните это как что-то вроде rmself.sh
и (жесткую) ссылку, что-то вроде tst
, то запуск ./tst
должен показать что-то вроде этого в качестве вывода:
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть несколько странных возможных угловых случаев в отношении символических ссылок и случаев, когда скрипт вызывался как голое имя (заставляя оболочку искать сценарий в $PATH
.
Но, похоже, что bash
(по крайней мере, в версии 3.2) добавляет в $0
путь, если он искал путь, и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, использованного для вызова скрипта. Кажется, он не делает никаких нормализаций или разрешений относительно путей или символических ссылок.
Вероятно, наиболее чистой «первой загрузкой» для Ubuntu было бы создание небольшого пакета (.deb), содержащего скрипт, который будет помещен в /etc/init.d/firstboot
и пост-установочный скрипт, который использует update-rc.d
, чтобы связать его с уровнем запуска 1 (/etc/rc1.d
) (с помощью команды, подобной: update-rc.d firstboot defaults
) ... ... а затем попросить последнюю строку выполнить деактивацию или удалить, используя что-то например: update-rc.d firstboot disable
Вот ссылка на Debian update-rc.d HOWTO