Skip to content

Ubuntu questions and answers#

Running a script as a service#

Let's say you have a script which normally you run using ./myscript.sh (contains java run command). You want to make it as a service, so it runs automatically after machine restart and etc.

You need to write systemd service file.

Simplest script looks like this:

[Unit]
Description=Virtual Distributed Ethernet

[Service]
ExecStart=/usr/bin/YOUR_SCRIPT

[Install]
WantedBy=multi-user.target

Also you need to execute daemon-reload after creating new service.

systemctl daemon-reload

Schedule a nightly reboot#

Edit crontab:

crontab -e

The first time you might have to choose your preferred editor (like nano).
Generate your cron with crontab generator and add restart command right after it:

0 4 * * * /sbin/shutdown -r +5

at the bottom. Explanation:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

so it would announce the reboot every day at 4:00am, then reboot 5 minutes later (at 4:05am).

Ctrl+X, Y, Enter should get you out of crontab (if using nano)

Note

you might have to run crontab -e as root, because shutdown needs root. crontab -e opens a file in /tmp instead of the actual crontab so that it can check your new crontab for errors. If there are no errors, then your actual crontab will be updated.

Removing old or unused docker images#

Docker 1.13: PR 26108 and commit 86de7c0 introduce a few new commands to help facilitate visualizing how much space the docker daemon data is taking on disk and allowing for easily cleaning up "unneeded" excess.

docker system prune will delete all dangling data (containers, networks, and images). You can remove all unused volumes with the --volumes option and remove all unused images (not just dangling) with the -a option.

You also have: - docker container prune - docker image prune - docker network prune - docker volume prune

For unused images, use docker image prune -a (for removing dangling and ununsed images). Warning: 'unused' means "images not referenced by any container": be careful before using -a.

As illustrated in A L's answer, docker system prune --all will remove all unused images not just dangling ones... which can be a bit too much.

Cleaning your server#

Анализируем занятое дисковое пространство Для анализа занимаемого пространства на диске можно использовать команду:

df -h

Данная команда выведет заполненность каждого раздела на диске. Нас интересует корневой раздел (/), именно его и стоит учитывать во время анализа занимаемого пространства.

Для более продвинутого анализа пространства можно использовать утилиту ncdu, у которой есть интерфейс, напоминающий чем-то утилиту WinDirStat, которая позволит вам гулять по директориям вашего сервера и смотреть файлы, которые занимают больше всего места.

Warning

Будьте осторожны при ручном удалении файлов!

Installation#

Note

Если у вас нет команды sudo или вы находитесь под учеткой root, писать ее не нужно

``bash sudo apt install ncdu

### Usage

!!! note
    Данная команда выполнит сканирование в директории /. Если у вас нет команды sudo или вы находитесь под учеткой root, писать ее не нужно

``bash
sudo ncdu /

После непродолжительного сканирования утилита выведет список файлов и директорий, занимающих пространство на вашем диске, в порядке убывания.

Пространство проанализировали, что дальше?

Самая жирная директория обычно это /var, и для ее очистки есть несколько путей:

a) Очистка старых логов (/var/log)

В том случае, если у вас накопилось много логов, которые вам не нужны, вы можете выполнить команду удаления логов, встроенную в дистрибутив:

sudo journalctl --vacuum-time=2d

Вместо 2d вы можете указать любую величину, чтобы оставить логи, накопившиеся за последние <дней>d

b) Очистка файлов Docker (/var/lib/docker)

Если вы используете Docker и у вас накопилось большое кол-во ненужных образов (например, от отработки CI/CD пайплайнов), необходимо провести очистку Docker Engine, с помощью следующих команд:

  • Удаление неиспользуемых образов
sudo docker image prune
  • Удаление неиспользуемых контейнеров
sudo docker container prune
  • Удаление неиспользуемых сетей
sudo docker network prune
  • Удаление неиспользуемых томов
sudo docker volume prune
  • Удаление всех неиспользуемых объектов в Docker Engine
sudo docker system prune -a

c) Очистка файлов Pterodactyl (/var/lib/pterodactyl)

Для владельцев игровых проектов

Файлы панели Pterodactyl крайне не рекомендуется удалять вручную, поскольку бэкенд панели "не заметит" удаление бэкапа, и оставит его висеть в панели, хотя он уже был удален.

Сделали очистку, но места все равно не хватает?

Удалите неиспользуемые пакеты (зависимости) с помощью вашего пакетного менеджера:

sudo apt autoremove