Zazwyczaj rozwiązywane są błahe problemy, ale skoro pojawiają się takie pytania to będę gromadzić w tym miejscu odpowiedzi.
********
Program w C podaje rozmiar pliku w bajtach.
include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main (int argc, char *argv[])
{
struct stat statst;
int retc;
if (argc <2)
{
fprintf (stderr, "Podaj nazwe pliku.\n");
return 1;
}
retc=stat (argv[1], &statst);
if (retc)
{
perror ("Blad.");
return 1;
}
printf ("Plik %s ma rozmiar %ld bajtów.\n", argv[1], statst.st_size);
return 0;
}
//end
********
Skrypt podaje rozmiar pliku w bajtach:
#!/bin/bash ls $1 stat -c%s $1 #lub du $1 |cut -f 1
********
Informacja o procencie zajętego miejsca na dysku.
df -h /home | awk '{ print $5 }' | tail -n 1 96% df -h /home | awk '{ print $4 }' | tail -n 1 942M df -h /home | awk '{ print $5 }'|grep %|cut -d% -f 1 96 df -h /home | cut -d' ' -f11 |tail -n1 96%
********
Rozmiar pliku:
#!/bin/bash ls $1 stat -c%s $1 #lub: du $1 |cut -f 1 #lub: du -h $1 |cut -f 1
********
Dźwięk dzwonka konsoli:
(bell)
#!/bin/bash echo -e "\a" #lub: echo -en '\007'
(ewentualny brak dźwięku spowodowany jest ustawieniami miksera dźwięku lub problemem z podsystemem dźwięku)
********
Odnaleźć w pliku linię zawierającą "txt1", wstawić spację i tekst "true"
1. Wejdź do pliku /etc/soft/soft.conf.
2. Znajdź linię zawierającą "txt1".
3. Za wyrazem wstawić wolne miejsce (spacja) oraz dopisać "true".
#!/bin/bash plik=/etc/soft/soft.conf sed -e 's/txt1/txt1 true/' "${plik}"
lub:
awk '{ gsub("txt1", "txt1 true", $0); print $0 }' "${plik}"
lub:
plik=/etc/soft/soft.conf
awkZnajdz="txt1"
awkZmienNa="txt1 true"
daneNowe=`awk -v plik_local="$plik" -v znajdz="$awkZnajdz" -v zamienNa="$awkZmienNa" ' \
BEGIN {
while (getline<plik_local>0) { \
for (i=0;i<=NF;i++) { \
if ($i==znajdz) { \
$i=zamienNa \
} \
} \
print $0
} \
} \
' "$plik" `
echo "$daneNowe"
********
Jak wyświetlić nazwę procesu najbardziej obciążającego cpu?
ps -aux ps -uxr ps -uxrk cpu ps -auxk -vsz |head -30 w iostat lsof
********
ARP:
sysctl -a |grep net.ipv4.neigh ip ntable show ip neigh flush all arp -n |grep ether |grep eth0 |grep -v incomplete |wc -l
********
Instrukcja IF i porównanie z dniem tygodnia,
"jeśli dzisiaj jest środa, to..."
"jeśli dzisiaj jest środa albo piątek,to..."
if [ "$day_of_week" = 3 -o "$day_of_week" = 5 ]
if [ "$day_of_week" = 3 -o "$day_of_week" = 5 -o "$day_of_week" = 7 ]
if [ "$day_of_week" = 3 ] || [ "$day_of_week" = 5 ] || [ "$day_of_week" = 7 ]
if [ "$day_of_week" -gt 3 -a "$day_of_week" -lt 5 ]
(są to nierówności ostre, czyli powyższe wyrażenie prawdziwe będzie tylko dla day_of_week=4)-a : AND
i jeszcze: man test
********
Wyświetlenie pliku:
cat plik.txt more plik.txt tail plik.txt
********
Ciągłe wyświetlanie dopisywanych treści do pliku:
tail -f plik.txt
********
Uruchomienie pliku:
sh plik.txt bash plik.txt chmod +x plik.txt ./plik.txt
********
Wyświetlenie informacji o systemie, jak wersja jadra, nazwa systemu:
(Dygresja: kilka razy spotkała mnie taka sytuacja: stosunkowo doświadczeni administratorzy, prawie konspiracyjnym szeptem, poinformowali mnie o istnieniu takiego polecenia... jednego z najbardziej podstawowych poleceń. Od razu widać czy kiedykolwiek kompilowali jądro)uname -a
********
Skrypt, a właściwie dwa, służące do testowania zużycia energii przez twarde dyski:
SSD vs HDD ile energii zużywa dysk
Drugi plik po założonym czasie "zabija" plik pierwszy, który przeprowadza testy. Jednocześnie wyświetlany jest czas do końca testów (przybliżony, ponieważ funkcja sleep nie działa bardzo precyzyjnie).
Skrypt: powerdisk
#!/usr/local/bin/bash
diskusb=/diskpowertest
timerun=`date +%s`
timestop=$[timerun+1800]
./stopprocess $$ $timestop &
case "$1" in
standby) echo "Standby test!"
while [ 1 ] ; do
filename=`date +%s`
touch "$diskusb/$filename"
sync
cp "$diskusb/$filename" /dev/null
sleep 5
done ;;
write) echo "Write test!"
while [ 1 ] ; do
for (( i=1; $i<=33; i++ )) ; do
mkdir "$diskusb/usr$i"
cp -r /usr/local/* "$diskusb/usr$i/"
sync
done
while [ 1 ] ; do
rm -r "$diskusb/usr33"
mkdir "$diskusb/usr33"
cp -r /usr/local/* "$diskusb/usr33/"
sync
done
done ;;
read) echo "Read test!"
while [ 1 ] ; do
for ((i=1; $i<=16; i++)) ; do
tar -cf /dev/null "$diskusb/usr$i"
done
done ;;
*) echo "Bledny wybor" ;;
esac
Skrypt: stopprocess
#!/usr/local/bin/bash
# $1 PID
# $2 timestop
processtop=$1
timestop=$2
while [ 1 ] ; do
timenow=`date +%s`
if [ "$timestop" -lt "$timenow" ] ; then
kill -9 $processtop
exit 1
fi
echo $[timenow-timestop]
sleep 2
done
********
Kodowanie ffmpeg:
Skrypt uruchamiany w danym katalogu przetwarza wszystkie pliki *.VOB na pojedynczy plik .mp4 Ustawienie ffmpeg dostosowane do transkodowania plików DV nagranych z kamery poprzez firewire.
#!/bin/bash
for f in ./*.dv; do
ffmpeg -i $"f" -preset slow -b:v 500k -b:a 128k -strict -2 -deinterlace $"{f%.dv*}.mp4"
done
Skrypt przegląda podkatalogi szukając nazwy "VIDEO_TS". Następnie koduje wszystkie pliki *.VOB z danego katalogu do jednego pliku .mp4 Plik wynikowy ma nazwę katalogu.
Jeżeli w pliku docelowym istnieje plik *.mp4 to nie podejmowane jest rekodowanie.
ffmpeg używa ustawień dostosowanych do transkodowania plików zgranych z DVD.
#!/usr/local/bin/bash
for i in `find . -type d -depth 1`; do
#midipatch="$maindirectory${i:1}"/VIDEO_TS/
midipatch=`pwd`"${i:1}"/VIDEO_TS/
#echo "$midipatch"
if [ -d "$midipatch" ]
then
if [ ! -f "$midipatch"*mp4 ]
then
echo "************************************"
echo "************************************"
echo "${i:2}"
echo "************************************"
echo "************************************"
#cat "$midipatch"*.VOB | ffmpeg -i - -preset veryslow -b:v 500k -threads 1 -b:a 128k -strict -2 "$midipatch""${i:2}".mp4
cat "$midipatch"*.VOB | ffmpeg -i - -preset veryslow -b:v 500k -b:a 128k -strict -2 "$midipatch""${i:2}".mp4
fi
fi
done
********
Zmiana rozmiaru zdjęć (resize)
Skrypt uruchamiany w danym katalogu przetwarza wszystkie pliki *.jp* i *.JP* Program mogrify jest jednowątkowy, więc skrypt uruchamia maksymalnie jego trzy kopie.
#!/usr/local/bin/bash
directory=`pwd`
IFS=$'\n'; for i in `find . -type f -iname "*.jp*" | sort`; do
while [ 4 -le `ps aux |grep mogrify |wc -l` ]
do
sleep 0.5
done
midipatch="$directory${i:1}"
#echo "$midipatch"
mogrify -verbose -resize 1280 -quality 92 "$midipatch" &
done
********
Zmiana zdjęć RAW (ARW i ORF) na JPEG
Skrypt uruchamiany w danym katalogu przetwarza wszystkie pliki *.arw, *.ARW, *.orf i *.ORF Program ufraw-batch jest jednowątkowy, więc skrypt uruchamia maksymalnie jego trzy kopie.
#!/usr/local/bin/bash
directory=`pwd`
IFS=$'\n';for i in `find . -type f -iname "*.ARW" -or -iname "*.ORF"`; do
while [ 4 -le `ps aux |grep ufraw |wc -l` ]
do
sleep 0.5
done
midipatch="$directory${i:1}"
endpath=`dirname "$midipatch"`
endpatch=`dirname "$midipatch"`
#echo "$midipatch"
#echo "$endpatch"
ufraw-batch --out-type=jpeg --wb=camera --compression=94 --overwrite --out-path="$endpatch" "$midipatch" &
done
********
Bez polskich znaków
unpolish(){ sed ' s/ą/a/g ; s/Ą/A/g s/ć/c/g ; s/Ć/C/g s/ę/e/g ; s/Ę/E/g s/ł/l/g ; s/Ł/L/g s/ń/n/g ; s/Ń/N/g s/ó/o/g ; s/Ó/O/g s/ś/s/g ; s/Ś/S/g s/ź/z/g ; s/Ź/Z/g s/ż/z/g ; s/Ż/Z/g s/ /_/g s/-/_/g ' | tr -s [:upper:] [:lower:] }
***
Inne wpisy:
Oświetlenie miejsca pracy
Oświetlenie LED łazienki (małej)
Zużycie prądu przez suszarkę do ubrań i pralkę
Zużycie prądu przez urządzenia domowe i ich współczynnik mocy cos phi (cosφ)
Modernizacja oświetlenia głównego w dużym pokoju i przedpokoju
Oświetlenie LED łazienki (małej)
Zużycie prądu przez suszarkę do ubrań i pralkę
Zużycie prądu przez urządzenia domowe i ich współczynnik mocy cos phi (cosφ)
Modernizacja oświetlenia głównego w dużym pokoju i przedpokoju
Update: 2015.02.09
Create: 2015.02.09
Brak komentarzy:
Prześlij komentarz