25 Aralık 2019 Çarşamba

fpu_control metodları

Giriş
Açıklaması şöyle.
Therefore, if you don't have SSE, the only option is (2) – set the FP CSR to 64b and try to avoid 32b floats. On Linux, you can do it with:
Şöyle yaparız.
#include <fpu_control.h>

fpu_control_t cw;

_FPU_GETCW(cw);
cw = (cw & ~_FPU_EXTENDED) | _FPU_DOUBLE;
_FPU_SETCW(cw);
Açıklaması şöyle.
Do it first thing in main(). If you use C++, you should do it first thing before main(), because people can use FP in constructors of global variables. This can be achieved by figuring out the compiler-specific translation unit initialization order, compiling your own C/C++ start-up library, overriding the entry point of a compiled start-up library using stuff like LD_PRELOAD, overwriting it in a statically linked program right there in the binary image, having a coding convention forcing to call FloatingPointSingleton::instance() before using FP, or shooting the people who like to do things before main(). It's a trade-off.

24 Aralık 2019 Salı

install komutu

Giriş
Açıklaması şöyle.
The install command (part of GNU coreutils along with cp, mv, rm, etc.) can copy a file while also setting its ownership and permissions and creating parent directories as necessary. By default it will make the new file executable.
Örnek
Şöyle yaparız. Böylece dosyam executable olur.
install /dev/stdin script.sh <<< "echo Hello World"
Şu komut ile aynıdır.
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
-D seçeneği
Açıklaması şöyle.
install is used to copy files and set attributes (see man install)

-D tells the command to "create all leading components of DEST except the last, or all components of --target-directory, then copy SOURCE to DEST"

-v causes to show every creation step (can be omitted of course)

/dev/null is the source, from where to copy

this_dir/new.txt is the target of the copy operation.
Şöyle yaparız. Böylece hiçbir şey kopyalamadan sadece belirtilen dosyanın içinde olması gereken dizin yaratılır.
install -Dv /dev/null this_dir/new.txt

mkdir komutu

-p seçeneği
Açıklaması şöyle. En kullanışlı seçeneklerden birisi bu. Bir yolun yaratılmasını garanti eder.
-p, --parents
          no error if existing, make parent directories as needed
Örnek
Dosyayı yaratmadan önce dizini yaratmak için şöyle yaparız.
mkdir -p $(dirname $file) && touch $file
Örnek
Şöyle yaparız.
mkdir -p /path-to-directory/directory-name

23 Aralık 2019 Pazartesi

timeout komutu

-k seçeneği
Örnek
Açıklaması şöyle.
evtest is run with a timeout of 10 seconds, and additional grace period of 5 seconds in (unlikely) case it hangs, after which it's killed by SIGKILL, hopefully returning keyboard control to you.
Şöyle yaparız.
sudo su -c 'sleep 1; timeout -k5 10 evtest --grab /dev/input/event18'

/dev/input/event Özel Dosyaları

Giriş
Bu dosyalar örneğin klavyeyi okumak için kullanılır. Dosyaları görmek için evtest komutu kullanılabilir

Örnek
Şöyle yaparız
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Power Button
/dev/input/event1:      Power Button
/dev/input/event2:      PC Speaker
/dev/input/event3:      Video Bus
/dev/input/event4:      HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event5:      HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event6:      HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event7:      HDA Intel HDMI HDMI/DP,pcm=9
/dev/input/event8:      HDA Intel HDMI HDMI/DP,pcm=10
/dev/input/event9:      HDA Intel PCH Front Mic
/dev/input/event10:     HDA Intel PCH Rear Mic
/dev/input/event11:     HDA Intel PCH Line
/dev/input/event12:     HDA Intel PCH Line Out
/dev/input/event13:     HDA Intel PCH Front Headphone
/dev/input/event14:     HDA NVidia HDMI/DP,pcm=3
/dev/input/event15:     HDA NVidia HDMI/DP,pcm=7
/dev/input/event16:     HDA NVidia HDMI/DP,pcm=8
/dev/input/event17:     ImExPS/2 Generic Explorer Mouse
/dev/input/event18:     AT Translated Set 2 keyboard
Select the device event number [0-18]:

~/.ssh/authorized_keys Dosyası - Bana Şifresiz Bağlanabilecek Bilgisayarların Public Key'leri Bu Dosyadadır

Giriş
Bu dosya şu dizinindedir.
~/.ssh/authorized_keys
Açıklaması şöyle.. Bu dosya sunucudadır. Sunucuya şifresiz bağlanabilecek bilgisayarların public key'leri bu dosyadadır
The public key is uploaded to a remote server that you want to be able to log into with SSH. The key is added to a special file within the user account you will be logging into called ~/.ssh/authorized_keys.
Seçenekler
Açıklaması şöyle.
You can have as many keys as you want in the authorized_keys file. It's one key per line with options prepended. There are many options that can be added to the authorized_keys file.
Açıklaması şöyle.
In the .ssh/authorized_keys file you can force a command to be run before logging in. The syntax error could be found there (using command="").

This has been used to log the login of any administrator into the system log with an unique key identifier (in addition to the IP address and hostname).
Yardım
Yardım almak için şöyle yaparız.
man authorized_keys
Key Pair Üretmek
Anahtar dosyalarını (ssh key pair) üretmek için ssh-keygen komutu kullanılır. 
Bu dosyayalardan public key olanını bana kopyalamak için ssh-copy-id komutu kullanılır

crontab komutu - Cron Dosyalarını Düzenler

Giriş

-e seçeneği
edit anlamına gelir. i tuşuna basarak insert moduna gireriz.

Örnek
Şöyle yaparız.
crontab -e # enter commands here again

-l seçeneği
Cron işlerini listeler.
Örnek
Şöyle yaparız.
# crontab -l
MAILTO=notify@localhost
0 */1 * * * find /var/www/tmp/ -name "*" -mmin +60 | /usr/bin/xargs /bin/rm -f -R
Örnek
Şöyle yaparız.
sudo crontab -l
0 0 */3 * * /root/.firefoxcatche/a/upd>/dev/null 2>&1
@reboot /root/.firefoxcatche/a/upd>/dev/null 2>&1
5 8 * * 0 /root/.firefoxcatche/b/sync>/dev/null 2>&1
@reboot /root/.firefoxcatche/b/sync>/dev/null 2>&1
#5 1 * * * /tmp/.X13-unix/.rsync/c/aptitude>/dev/null 2>&1

22 Aralık 2019 Pazar

sudoers dosyası

Giriş
Bu dosya elle değil visudo ile düzenlenmeli. Zaten dosyanın başında bu bilgi veriliyor. Görmek için şöyle yaparız
$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
Defaults Komutu
Açıklaması şöyle.
Certain configuration options may be changed from their default values at run-time via one or more Default_Entry lines. These may affect all users on any host, all users on a specific host, a specific user, a specific command, or commands being run as a specific user. Note that per-command entries may not include command line arguments. If you need to specify arguments, define a Cmnd_Alias and reference that instead.
Defaults/env-reset değişkeni
Ortam değişkenlerini sıfırlar.

Örnek
Şöyle yaparız
Defaults        env_reset
Defaults        env_keep += "PYTHONPATH OTHERVARIABLE YETANOTHER"
Örnek
Ubuntu ortam değişkenlerini sıfırlamıyor. $HOME değişkeninin aynı kaldığını görmek için şöyle yaparız.

Elimizde myhome.sh olsun
echo $HOME
Şöyle yaparız. $HOME hep /home/user olarak kalıyor.
$ echo $HOME
/home/user

$ sudo echo $HOME
/home/user

$ bash myhome.sh
/home/user

$ sudo bash myhome.sh
/home/user
Debian ise $HOME değişkenini /root haline getiriyor. Şöyle yaparız
$ echo $HOME
/home/user

$ sudo echo $HOME
/home/user

$ bash myhome.sh
/home/user

$ sudo bash myhome.sh
/root
Defaults/timestamp_timeout değişkeni
Şifrenin ne kadar süre boyunca saklanacağını belirtir.
Örnek
Şöyle yaparız.
Defaults    env_reset, timestamp_timeout=120, pwfeedback
Örnek
Elimizde şöyle bir satır olsun.
Defaults timestamp_timeout=0
Elimizde şöyle bir satır olsun
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
Şöyle yaparız.
[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c //Şifre gerekir
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H //Şifre gerekir
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c //Şifre gerekir
[sudo] password for jdoe:
NOPASSWD Alanı
Belirtilen komutlar için şifre sorulmamasını sağlar
Örnek
gitlab-ci kullanıcısının cp ve mv gibi komutları şifresiz çalıştırabilmesi için şöyle yaparız
echo 'gitlab-ci ALL=(ALL) NOPASSWD: /bin/mv, NOPASSWD: /usr/bin/systemctl,
NOPASSWD: /bin/cp' | sudo EDITOR='tee -a' visudo
Örnek
sudo grubundakilerin şifresiz komut çalıştırabilmesi için şöyle yaparız.
# Allow members of group sudo to execute any command, no password
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL
Örnek
Tük kullanıcıların poweroff komutunu çalıştırılabilmesi için şöyle yaparız
%users  ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot
mail-no_user değişkeni
Açıklaması şöyle. sudo komutunu çalıştırmaya hakkı olmayan birisinin gerçekleştirdiği eylem /var/log/auth.log dosyasına kaydedilir. E-posta göndermesi de isteniyorsa bu değişkene değer atanır.
If set, mail will be sent to the mailto user if the invoking user is not in the sudoers file. This flag is on by default.
secure-path değişkeni
sudo sistemin $PATH değişkenini değil, kendi değişkenini kullanır.

Örnek
Şöyledir
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
group Belirtme
Burada (group:username) şeklinde kullanılıyor. sudo'nun amacı zaten komutu kendimden farklı bir group ve kullanıcı ismi ile kullanmak. Şöyle yaparız
sudo -u user1 -g group1 some_program
Örnek
Şöyle yaparız
root        ALL = (ALL:ALL) ALL
%wheel      ALL = (ALL:ALL) ALL
Sadece username Belirtme
Açıklaması şöyle.
When multiple entries match for a user, they are applied in order. Where there are multiple matches, the last match is used (which is not necessarily the most specific match).
Örnekler şöyle
ALL =(root): komut - root olmayan kullanıcılar içindir
ALL =(ALL): komut - herkes içindir
Örnek
Şöyle yaparız.
# Allow members of group sudo to execute any command
%wheel   ALL=(ALL:ALL) ALL
Örnek
root olmayan kullanıcılara hak vermek için şöyle yaparız
username ALL=(root): /usr/sbin/reboot
username ALL=(root): /usr/bin/systemctl reboot
Örnek
Bir dosyayı şifresiz, geri kalan her komutu şifre ile çalıştırmak için şöyle yaparız.
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD: /home/username/script.sh


Libre Office

libreoffice komutu
Örnek
Şöyle yaparız
libreoffice --headless --convert-to pdf /path/to/original-file.doc
soffice komutu
--calc seçeneği
Excel dosyasını açmak için şöyle yaparız
'soffice --calc -o /home/chris/Documents/Spreadsheets/Top\ 250\ films.ods'
--convert-to seçeneği
Şöyle yaparız. Verilen .dot uzantılı belgeyi metin (text) haline çevirir.
soffice --headless --convert-to txt:Text YOUR-DOCUMENT-HERE.DOT