diff --git a/Script/alias_main b/Script/alias_main index 7298454..42cb338 100755 --- a/Script/alias_main +++ b/Script/alias_main @@ -1,5 +1,6 @@ #!/bin/bash +source "${alias_dir}/crontab" source "${alias_dir}/install" source "${alias_dir}/pdf" source "${alias_dir}/hdd" diff --git a/Script/backup b/Script/backup index ce15ef1..a8cf6aa 100644 --- a/Script/backup +++ b/Script/backup @@ -61,81 +61,106 @@ backup_delete_old_files_by_date() } mkalias_with_prefix 'backup_delete_old_files_by_date' +backup_date_day() +{ + echo "$(date +%Yy_%mm_%dd-%Vv)" +} +mkalias_with_prefix 'backup_date_day' + backup_date() { - echo "$(date +%Yy_%mm_%dd-%Vv-%Hh_%Mm_%Ss)" + day=$(backup_date_day) + echo "${day}-$(date +%Hh_%Mm_%Ss)" } mkalias_with_prefix 'backup_date' +exclude_mozilla=' +--exclude=.mozilla/firefox/*/Cache +--exclude=.mozilla/firefox/*/storage/*/https* +--exclude=.mozilla/firefox/*/storage/*/http* +--exclude=.mozilla/firefox/*/storage/*/file* +' + backup_firefox() { - backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + eval $(mkvar 'backup_dir|$1||Укажите папку для бекапа') + eval $(mkvar 'user|$2|$(whoami)') #ask_continue && return - cd ~ - file="${backup_dir}/$(hostname)_mozilla_backup_$(backup_date).tgz" + + file_add_name="mozilla_backup" + file_pref="${backup_dir}/$(hostname)_${user}_${file_add_name}_" + [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + + file="${file_pref}$(backup_date).tgz" + tar cvpzf "${file}" \ - --exclude=.mozilla/firefox/*/Cache \ - --exclude=.mozilla/firefox/*/storage/*/https* \ - --exclude=.mozilla/firefox/*/storage/*/file* \ - .mozilla + ${exclude_mozilla//'\n'/' '} \ + /home/${user}/.mozilla echo "${file}" } mkalias_with_prefix 'backup_firefox' +exclude_home=' +--exclude=*/Загрузки/* \ +--exclude=*/Backup/* \ +--exclude=*/Музыка/* \ +--exclude=MyProgs \ +--exclude=media \ +--exclude=private \ +--exclude=.thumbnails \ +--exclude=*/.cache/* \ +--exclude=/.config/chromium/*/CacheStorage \ +--exclude=*/.config/skypeforlinux/Cache \ +--exclude=.local \ +--exclude=.var/app/app.organicmaps.desktop/data \ +--exclude=.steam \ +--exclude=.smartgit/updates \ +--exclude=.wine*/*/windows/ \ +--exclude=.googleearth \ +--exclude=*/.Genymobile \ +--exclude=go/pkg \ +--exclude=.apt \ +--exclude=.npm \ +--exclude=.gradle \ +--exclude=Android \ +--exclude=build/intermediates \ +--exclude=build/*.obj \ +--exclude=chromium/*/WebStorage \ +--exclude=.android \ +--exclude=.VirtualBox/*.iso \ +' + backup_home() { - backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + eval $(mkvar 'backup_dir|$1||Укажите папку для бекапа') #ask_continue && return - cd /home - file="${backup_dir}/$(hostname)_home_backup_$(backup_date).tgz" + file_add_name="home_backup" + file_pref="${backup_dir}/$(hostname)_${file_add_name}_" + [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + + file="${file_pref}$(backup_date).tgz" sudo tar cvpzf "${file}" \ - --exclude=*home_backup*.tgz \ - --exclude=*/Загрузки/* \ - --exclude=*/Backup/* \ - --exclude=*/Музыка/* \ - --exclude=MyProgs \ - --exclude=media \ - --exclude=private \ - --exclude=.thumbnails \ - --exclude=.mozilla/firefox/*/Cache \ - --exclude=.mozilla/firefox/*/storage/*/https* \ - --exclude=.mozilla/firefox/*/storage/*/file* \ - --exclude=*/.cache/* \ - --exclude=/.config/chromium/*/CacheStorage \ - --exclude=*/.config/skypeforlinux/Cache \ - --exclude=.local \ - --exclude=.var/app/app.organicmaps.desktop/data \ - --exclude=.steam \ - --exclude=.smartgit/updates \ - --exclude=.wine*/*/windows/ \ - --exclude=.googleearth \ - --exclude=*/.Genymobile \ - --exclude=go/pkg \ - --exclude=.apt \ - --exclude=.npm \ - --exclude=.gradle \ - --exclude=Android \ - --exclude=build/intermediates \ - --exclude=build/*.obj \ - --exclude=chromium/*/WebStorage \ - --exclude=.android \ - --exclude=.VirtualBox/*.iso \ - . + --exclude=/*${file_add_name}*.tgz \ + ${exclude_mozilla//'\n'/' '} \ + ${exclude_home//'\n'/' '} \ + /home echo "${file}" } mkalias_with_prefix 'backup_home' backup_etc() { - backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + eval $(mkvar 'backup_dir|$1||Укажите папку для бекапа') #ask_continue && return - cd / - file="${backup_dir}/$(hostname)_sys_etc_backup_$(backup_date).tgz" + + file_add_name="sys_etc_backup" + file_pref="${backup_dir}/$(hostname)_${file_add_name}_" + [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + + file="${file_pref}$(backup_date).tgz" + sudo tar cvpzf "${file}" \ /etc echo "${file}" @@ -144,13 +169,7 @@ mkalias_with_prefix 'backup_etc' backup_sys() { - backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return - #ask_continue && return - cd / - file="${backup_dir}/$(hostname)_sysbackup_$(backup_date).tgz" - sudo tar cvpzf "${file}" \ - --exclude=/*_sysbackup_*.tgz \ + exclude_sys=' --exclude=/proc \ --exclude=/dev \ --exclude=/lost+found \ @@ -166,6 +185,19 @@ backup_sys() --exclude=/usr/share \ --exclude=/tmp \ --exclude=/opt \ + ' + eval $(mkvar 'backup_dir|$1||Укажите папку для бекапа') + #ask_continue && return + + file_add_name="sysbackup" + file_pref="${backup_dir}/$(hostname)_${file_add_name}_" + [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + + file="${file_pref}$(backup_date).tgz" + + sudo tar cvpzf "${file}" \ + --exclude=/*${file_add_name}*.tgz \ + ${exclude_sys//'\n'/' '} \ / echo "${file}" } @@ -174,12 +206,13 @@ mkalias_with_prefix 'backup_sys' backup_firefox_and_del_old_files() { backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + [ "$backup_dir" = '' ] && backup_dir=$(pwd) && printf "Папка для бекапа '${backup_dir}'\n" + eval $(mkvar 'user|$2|$(whoami)') #ask_continue && return backup_host_dir="${backup_dir}/$(hostname)" mkdir "${backup_host_dir}" - backup_ff_dir="${backup_host_dir}/firefox" + backup_ff_dir="${backup_host_dir}/firefox_${user}" mkdir "${backup_ff_dir}" backup_firefox "${backup_ff_dir}" @@ -190,10 +223,10 @@ mkalias_with_prefix 'backup_firefox_and_del_old_files' backup_home_and_del_old_files() { backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + [ "$backup_dir" = '' ] && backup_dir=$(pwd) && printf "Папка для бекапа '${backup_dir}'\n" #ask_continue && return - backup_host_dir="$(pwd)/$(hostname)" + backup_host_dir="${backup_dir}/$(hostname)" mkdir "${backup_host_dir}" backup_home_dir="${backup_host_dir}/home" mkdir "${backup_home_dir}" @@ -206,10 +239,10 @@ mkalias_with_prefix 'backup_home_and_del_old_files' backup_sys_and_del_old_files() { backup_dir=$1 - [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + [ "$backup_dir" = '' ] && backup_dir=$(pwd) && printf "Папка для бекапа '${backup_dir}'\n" #ask_continue && return - backup_host_dir="$(pwd)/$(hostname)" + backup_host_dir="${backup_dir}/$(hostname)" mkdir "${backup_host_dir}" backup_sys_dir="${backup_host_dir}/sys" mkdir "${backup_sys_dir}" diff --git a/Script/common b/Script/common index 1faf9da..c5dc150 100644 --- a/Script/common +++ b/Script/common @@ -16,3 +16,22 @@ ask_continue() fi return 1 } + +mkvar() +{ + # на входе 'var_name|val|def_val|string_to_print_before_return' + p="$1" + readarray -d "|" -t cur_params <<< "$p" + var_name="${cur_params[0]}" + val="${cur_params[1]}" + def_val="${cur_params[2]}" + string_to_print_before_return="${cur_params[3]}" + + if [ "${string_to_print_before_return}" == "" ]; then + echo "$var_name=$val; [[ \"\${$var_name}\" == \"\" ]] && $var_name=$def_val;" + else + echo "$var_name=$val; [[ \"\${$var_name}\" == \"\" ]] && printf(\"${string_to_print_before_return}\\n\") && return;" + fi +} + + diff --git a/Script/crontab b/Script/crontab new file mode 100644 index 0000000..87d4f76 --- /dev/null +++ b/Script/crontab @@ -0,0 +1,79 @@ +#!/bin/bash + +[ "${alias_dir}" = "" ] && alias_dir=$(pwd) +source "${alias_dir}/common" + +crontab_edit() +{ + sudo_=$1 + EDITOR=mcedit $sudo_ crontab -e +} +mkalias_with_prefix 'crontab_edit' + +crontab_edit_sudo() +{ + crontab_edit sudo +} +mkalias_with_prefix 'crontab_edit_sudo' + +crontab_print() +{ + sudo_=$1 + $sudo_ crontab -l +} +mkalias_with_prefix 'crontab_print' + +crontab_add_silence() +{ + cmd=$1 + sudo_=$2 + $sudo_ crontab -l | { cat; echo "${cmd}"; } | $sudo_ crontab - +} +mkalias_with_prefix 'crontab_add_silence' + +crontab_add() +{ + cron_help=' +#minute (0-59), +#|<---->hour (0-23), +#|<---->|<----->day of the month (1-31), +#|<---->|<----->|<----->mfreqonth of the year (1-12), +#|<---->|<----->|<----->|<----->day of the week (0-6 with 0=Sunday). +#|<---->|<----->|<----->|<----->|<----->commands + +Примеры Cron заданий + +Запускать команду в 15:00 каждый день с понедельника по пятницу: +0 15 * * 1-5 command + +Запускать скрипт каждые 5 минут: + +MAILTO=email@example.com +*/5 * * * * /path/to/script.sh > /dev/null + +Запускать сценарий в первый понедельник каждого месяца в 7 часов утра: + +0 7 1-7 * 1 /path/to/script.sh + +Запускать сценарий в 21:15, 1 и 15 числа каждого месяца: + +15 9 1,15 * * /path/to/script.sh + +Запускать при старте ситемы: + +@reboot /path/to/script.sh + ' + cmd="$1" + sudo_=$2 + [[ "$cmd" == "" ]] && printf "Укажите команду, например 'crontab_add \"00 09 * * 1-5 echo hello\"}' ${cron_help}\n" && return + printf "Добавляем команду '${cmd}'\n" + ask_continue && return + + crontab_add_silence "$cmd" "$sudo_" + + printf "Получившийся кронтаб:\n" + crontab_print "$sudo_" +} +mkalias_with_prefix 'crontab_add' + + diff --git a/Script/install b/Script/install index a352d9b..f0a283d 100644 --- a/Script/install +++ b/Script/install @@ -218,13 +218,10 @@ mkalias_with_prefix 'install_thinkfan' install_max_freq() { - printf "Установка максимальной частоты процессора\n" - ask_continue && return - # Set max freq - echo 'Выполнить - EDITOR=mcedit crontab -e - Записать туда - @reboot cpupower frequency-set --max 2.3G' + freq=$1 + [[ "$freq" == "" ]] && freq="1.5G" + #ask_continue && return + crontab_add "@reboot cpupower frequency-set --max ${freq}" sudo } mkalias_with_prefix 'install_max_freq' @@ -275,12 +272,14 @@ set_max_perf_and_charge() max_charge=$2 [ "${max_perf}" = "" ] && max_perf="80" [ "${max_charge}" = "" ] && max_charge="80" - printf "Максимальная производительность в ${max_perf} и заряд в ${max_charge}\n" + printf "Установить максимальную производительность в ${max_perf} и заряд в ${max_charge}\n" ask_continue && return # Установить максимальный уровень заряда и поизводительности #sudo apt-get install tlp echo "${max_perf}" | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold echo "${max_charge}" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct + crontab_add "@reboot echo "${max_perf}" | tee /sys/class/power_supply/BAT0/charge_control_end_threshold" sudo + crontab_add "@reboot echo "${max_charge}" | tee /sys/devices/system/cpu/intel_pstate/max_perf_pct" sudo } mkalias_with_prefix 'set_max_perf_and_charge' @@ -292,7 +291,6 @@ get_max_perf_and_charge() } mkalias_with_prefix 'get_max_perf_and_charge' - install_headers() { printf "Установка заголовков для исходного кода ядра linux-headers\n"