Вопрос в том, как вернуться к Ubuntu из Kubuntu, затем установить LXDE, а затем:
http://www.psychocats.net/ubuntu/purelxde
Если вы были желая просто Ubuntu: http://www.psychocats.net/ubuntu/purelxde
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
Нет. Но вы можете разместить свой скрипт в /etc/init.d/script
и удалить его самостоятельно:
#!/bin/bash
echo "Bump! I'm your first-boot script."
# Delete me
rm $0
$0
зависит от bash (версия & gt; = 3). Для совместимости вы можете вместо этого указать имя файла скрипта, сделав его менее общим: rm /etc/init.d/script
– Andrejs Cainikovs
27 June 2012 в 21:07
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Объединение первых двух ответов Предполагая, что вы назовете свой скрипт /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Я удивлен результатами, которые я вижу для поиска хорошо определенного и поддерживаемого 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 должен показать что-то вроде этого как вывод: [ ! d4]
$ ./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 установленным для любого относительного или абсолютного пути, используемого для вызова скрипта. Кажется, что самая чистая «firstboot» для Ubuntu - это создать небольшой пакет (.deb), содержащий скрипт, который будет помещен в [ f11] и сценарий после установки, который использует update-rc.d, чтобы связать это с уровнем выполнения 1 (/etc/rc1.d) (используя команду like: update-rc.d firstboot defaults) ... и затем последняя строка выполняет деактивацию или удаление с использованием чего-либо например: update-rc.d firstboot disable
Вот ссылка на oem-config-firstboot
Вы можете скопировать текущий 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
Вопрос был о запуске скрипта при первой загрузке EC2. Вы можете использовать cloud-init
для этой цели.
При запуске нового экземпляра EC2 у вас есть возможность определить User data
в Advanced datails
. Если вы поместите туда скрипт cloud-init
, он будет выполнен только при первой загрузке.
Например, вы можете поместить в User data
следующее: записаться в /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.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /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.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.
Объединение первых двух ответов. Предполагая, что вы называете свой скрипт, /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
Вы можете сделать резервную копию текущего 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
(этот скрипт запускается при каждой загрузке), скрипты выглядят так
#!/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.
Создайте файл отслеживания при запуске скрипта. Если файл уже существует, выйдите из сценария.