Jaka centrala?

23 maja, 2011 (22:44) | sprzęt | By: konrad

Nie, blog nie umarł. Przynajmniej jeszcze nie. Przez ostatnie „kilka” tygodni pogrążony byłem w ferworze przeprowadzki firmy do nowego biura. Mniej-więcej się to udało, więc jest szansa, że uda mi się czasami coś tu napisać.

Historycznie po raz pierwszy zetknąłem się ze Slicanem na pierwszych latach studiów. Było to jakieś bardzo stare i zajmujące okropnie dużo miejsca pudło, z którego musiałem zrobić billing. Nie wspominam tej przygody zbyt dobrze nawet pomimo to, że cel został osiągnięty, a klient usatysfakcjonowany. Potem była pewna szkoła i PMS-08, którego istnienie odkryłem w momencie, w którym przestał działać :-\ Jak widać – początki niezbyt zachęcające. Ale później było coraz lepiej…
W jednym z nowo tworzonych oddziałów firmy wylądował CCT-1668.L (który działa do dziś i niedługo będzie rozbudowywany). Kilka miesięcy później w moim ulubionym liceum pojawił się CCT-1668.S (też działa do dnia dzisiejszego bez najmniejszego zgrzytu). Potem do kolekcji dołączył CXS-0424, dwa serwery MAC-6400 (jeden złożony z trzech półek) oraz kolejny CCT-1668, tym razem w wersji RACKowej.

Ponieważ nie mam zbyt dużego doświadczenia w temacie – nie pracowałem na niczym poza Slicanem, Elektronixem (o którym zbyt dobrej opinii nie mam) oraz niektórymi Panasonikami – nie jestem w stanie porównać tych centralek do niczego innego. Ale wg mnie jest to sprzęt naprawdę godny uwagi ze względu na wysoką jakość wykonania i całkiem niezłe ceny. Administracja wprawdzie do najłatwiejszych nie należy (interfejs Slicana ma swoją logikę, która czasami odrobinę odbiega od tej ogólnie przyjętej), to jednak udało mi się do tego przekonać i po pewnym czasie jest nawet wygodne.

Pobawię się jeszcze w reklamę, a co!
Jeżeli ktoś szuka naprawdę solidnego dostawcy/integratora takich rozwiązań, to z czystym sumieniem mogę polecić firmę ASSET z Wrocławia. Osobiście mam na co dzień do czynienia wprawdzie tylko z jednym jej pracownikiem, ale „opieka” nade mną, jako klientem naprawdę zrobiła na mnie wielkie wrażenie. Wszystko jest zawsze zrobione solidnie i na czas i mam wrażenie, że faktycznie jestem traktowany poważnie. Podejście do klienta typu „sprzedaj i zapomnij” to zdecydowanie inna bajka.

Dell H200 i problemy z wydajnością

7 stycznia, 2011 (11:04) | sprzęt | By: konrad

Serwerów Della używam od dość dawna i nigdy nie miałem z nimi większych problemów. Ale chyba zbytnio ostatnio zaufałem wysokiej jakości ich produktów i udało mi się kupić coś, co nie działa. No dobra, technicznie rzecz biorąc – działa, a jego jakości nie mam powodów krytykować, ale czegoś, co ma niemalże zerową wydajność nie mogę nazwać użytecznym :-\

Chodzi mi konkretnie o kontroler RAID H200. Zamówiliśmy coś takiego z uwagi połączenie przystępnej ceny oraz obsługi wszystkiego, czego potrzebowałem. Tylko nie zauważyłem jednego… ta karta nie ma na sobie ani bajta cache’u. Co samo w sobie nie byłoby takie bardzo złe, gdyby nie to, że producent (z uwagi na dobro klienta, oczywiście) postanowił „na sztywno”… wyłączyć także cache samych dysków. Mamy więc wyjątkowo bezpieczny podsystem dyskowy, który ma nawet w miarę rozsądne możliwości, jeżeli chodzi o czytanie danych z podpiętych dysków. I co z tego, skoro zapisanie na nich czegokolwiek trwa całe wieki? Z resztą, na taki sam problem natknęło się sporo innych osób (o czym można poczytać choćby tutaj albo tutaj).

Nie wiem, co kierowało projektantami Della, że wypuścili na rynek aż tak bezsensowną konstrukcję, ale trudno jest mi wykombinować sytuację, w której taki kontroler byłby używalny. No nic, mądry polak po szkodzie (jak twierdzi przysłowie) – karta pewnie zalegnie na dobre gdzieś na półce, a do serwera będzie trzeba kupić coś, co jest chociaż odrobinę szybsze, niż wykuwanie danych na granitowej tabliczce.

Jak zainstalować SAPRFC?

23 grudnia, 2010 (11:43) | sap | By: konrad

Wbrew pozorom „SAPRFC” to nie jest to samo, co „SAP RFCSDK”.

Jak możemy przeczytać na stronie projektu:

SAPRFC is the extension module for PHP4 and PHP5 that allow call ABAP functions in an SAP R/3 system from PHP scripts. On other side it’s also possible write RFC server program in PHP and call PHP functions from ABAP.

Jest to rozszerzenie napisane przez programistów niezależnych od samego SAPa i służące jako interfejs pomiędzy systemem SAP R/3 a programami pisanymi w PHP4/5.

SAP RFCSDK natomiast, to produkt napisany przez załogę SAPa i umożliwiający:

The RFC Library offers an interface to a SAP System. The RFC Library is the most commonly used and installed component of existing SAP Software. This interface provides the opportunity to call any RFC Function in a SAP System from an external application. Moreover, the RFC Library offers the possibility to write a RFC Server Program, which is accessible from any SAP System or external application. Most SAP Connectors use the RFC Library as communication platform to SAP Systems.

Żeby nie było zbyt łatwo, SAPRFC korzysta z SAP RFCSDK :-)

Ponieważ moi koledzy zajmujący się SAPem postanowili stworzyć nowy portal (który pewnie będzie służył jakiemuś wyższemu celowi) używając PHP, „zaszła potrzeba” instalacji interfejsu właśnie go PHPa.

Do dzieła…

Po pierwsze, musimy pobrać pakiet z wersją instalacyjną programu. W chwili obecnej jest to wersja 1.4.1 i (patrząc na datę wydania) nie sądzę, aby to się miało szybko – jeżeli w ogóle – zmienić.
[kbechler@ticket saprfc]$ wget "http://sourceforge.net/projects/saprfc/files/saprfc/1.4.1/saprfc-1.4.1.All.zip/download"
--2010-12-23 10:21:27-- http://sourceforge.net/projects/saprfc/files/saprfc/1.4.1/saprfc-1.4.1.All.zip/download
Resolving sourceforge.net... 216.34.181.60
Connecting to sourceforge.net|216.34.181.60|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://downloads.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.All.zip?r=&ts=1293096087&use_mirror=puzzle [following]
--2010-12-23 10:21:27-- http://downloads.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.All.zip?r=&ts=1293096087&use_mirror=puzzle
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://puzzle.dl.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.All.zip [following]
--2010-12-23 10:21:28-- http://puzzle.dl.sourceforge.net/project/saprfc/saprfc/1.4.1/saprfc-1.4.1.All.zip
Resolving puzzle.dl.sourceforge.net... 195.141.111.5
Connecting to puzzle.dl.sourceforge.net|195.141.111.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 216617 (212K) [application/zip]
Saving to: `saprfc-1.4.1.All.zip'
100%[============================================================================================================================>] 216,617 62.2K/s in 3.4s
2010-12-23 10:21:32 (62.2 KB/s) - `saprfc-1.4.1.All.zip' saved [216617/216617]
[kbechler@ticket saprfc]$

Po drugie, trzeba to wypakować:[kbechler@ticket saprfc]$ unzip ./saprfc-1.4.1.All.zip
Archive: ./saprfc-1.4.1.All.zip
inflating: ChangeLog
[...]
inflating: ext/php_saprfc_530.dll
[kbechler@ticket saprfc]$

Teraz mamy do wyboru dwie drogi:

  • przebudować całego PHPa z włączonym dodatkiem saprfc (czego bardzo nie chciałbym robić),
  • skompilować saprfc jako dynamiczny moduł PHP (co chciałbym zrobić).

Żeby zbudować moduł dla PHPa, musimy wklepać po kolei:

  • phpize
  • ./configure
  • make
  • sudo make install

Jak już to wszystko uda nam się zainstalować, to w katalogu usr/lib64/php/modules (lub /usr/lib64/php/modules dla systemów 64-bitowych) powinniśmy dostać plik saprfc.so będący upragnionym przeze mnie modułem.

Ostatnim krokiem jest utworzenie pliku, który powie PHPowi, aby z naszego nowego modułu skorzystał:
[kbechler@ticket ~]$ cat /etc/php.d/sap.ini
extension=saprfc.so
[kbechler@ticket ~]$

I to właściwie tyle. Pozostaje zrestartować Apache’a i oddać system w ręce kolegów od SAPa :-)

UWAGI:
Błąd linkera /usr/bin/ld: skipping incompatible /usr/sap/rfcsdk/lib/librfccm.so when searching for -lrfccm nie oznacza wcale, że mamy złą wersję (w sensie numerka) biblioteki, tylko że próbujemy linkować do złej architektury (w moim przypadku był to system x86_64 i 32-bitowa wersja SAP RFCSDK).

ipsec + nat = bug

22 grudnia, 2010 (11:56) | cisco | By: konrad

W jednym z oddziałów stoi sobie Cisco 876, które robi jako brama do Internetu (w sensie NATa) oraz terminator tuneli VPNowych spinających całą firmę. Ponieważ całe „biuro” składa się z kilku raptem osób, to takie urządzenie jest w zupełności wystarczające. Niestety, jeden z pracujących tam ludków zapragnąć posiadać zdalny dostęp do jakiegoś dziwnego programu, zainstalowanego właśnie we wspomnianej lokalizacji. OK, skoro musi… „standardy” przewidują, żeby mu zainstalować Cisco VPN clienta i skonfigurować wszystko tak, żeby mógł się do upragnionej aplikacji dostać, ale za pomocą połączenia szyfrowanego. Tak też zrobiłem, ale dziś temat wrócił z diagnozą „łączy się, ale nie działa”. Hmmm, widać coś poszło niezupełnie tak, jakbym chciał… [tutaj pominę mozolny etap stukrotnego czytania konfiguracji w celu znalezienia błędu].
Za pomocą wujka google’a znalazłem opis bardzo podobnego problemu – wprawdzie na zupełnie innym modelu routera i w innej wersji IOSa, ale jednak. Co ciekawe, w mojej konfiguracji nie było RRI, ale także i tutaj po wyłączeniu CEFa wszystko zaczynało działać. Postanowiłem więc spróbować metod, które był tam polecane.

Okazało się, że obejście problemu, polegające na dodaniu RRI z bezpośrednio podanym next-hopem poprawiło sytuację i u mnie :-) Nie mam pojęcia, dlaczego akurat tak, ale wszystko wydaje się działać bez zarzutu.

Kiedyś już miałem bardzo podobne objawy na serii 17xx, ale wtedy pomógł upgrade IOSa. Wynika mi też, że odpowiednik buga CSCtg41606 jest z nami od naprawdę dawna i pojawia się co n-tą wersję :-) I nawet ciężko to podciągnąć pod regułkę „it’s not a bug – it’s a feature” :-)

Dropbox

21 grudnia, 2010 (14:30) | Bez kategorii | By: konrad

Dropbox logoDropbox to coraz bardziej popularna usługa umożliwiająca synchronizowanie plików pomiędzy kilkoma komputerami. Wystarczy utworzyć sobie w systemie konto, zainstalować niewielki programik na wszystkich komputerach, które wykorzystujemy (do wyboru mamy wersja dla Windows, Linuksa oraz Mac OS X) , i wskazać „wspólny” katalog. Całą reszta dzieje się bez udziału użytkownika. Podstawowym efektem działania tego cudeńka jest automagiczne synchronizowanie zawartości katalogu współdzielonego na wszystkich naszych komputerach. Fajne i bardzo przydatne narzędzie, które pozwala posiadać najczęściej wykorzystywane rzeczy zawsze przy sobie. Szczególnie, że dostęp do tych zasobów mamy także przez stronę WWW.

Ponieważ w Sieci jest już trochę informacji co tak właściwie ten system potrafi (choćby tutaj), to nie będę się rozwodził nad tym, jaki to on cudowny, jedyny, niepowtarzalny, etc. :-)

Za to wkleję tutaj pewien link ( https://www.dropbox.com/referrals/NTE3MTYyODc0OQ ). Jeżeli ktoś się zarejestruje używając właśnie tego odnośnika, to staną się dwie, całkiem przyjemne rzeczy. Po pierwsze, moje konto zostanie powiększone o 250MB, za które nie będę musiał zapłacić. A po drugie, do konta nowo zarejestrowanej osoby także zostanie dopisane 250MB na pliki. Tylko dlatego, że kliknął na link powyżej, zamiast włazić bezczelnie bezpośrednio na stronę główną projektu :-)

Jak wywalić Windowsa?

20 grudnia, 2010 (10:21) | windows | By: konrad

Nie, wcale nie chcę pisać o tym, jak pozbyć się systemu Windows i zainstalować na dysku coś innego. Po prostu chciałem się pochwalić tym, że znalazłem dość osobliwy program. I to w dodatku na stronach TechNetu.

Z opisu programu:

Use this executable and driver to crash your system in several different ways.

Fajne, no nie? Linka do pliku można znaleźć na tej stronie.

Ciekawi mnie tylko to, że skoro Microsoft wie, jak zepsuć swój system, to dlaczego tego nie załata?

Porada dnia

6 grudnia, 2010 (11:37) | Bez kategorii | By: konrad

ImgBurn mnie właśnie rozłożył na łopatki (interesujący kawałek zaznaczyłem na czerwono):

Zablokowany użytkownik w SAP

2 grudnia, 2010 (13:37) | sap | By: konrad

Pytanie: Jak zmienić hasło użytkownika w SAP?
Odpowiedź: Normalnie, poprzez transakcję SU01.

Gorzej, jeżeli odtworzyliśmy system z jakiejś archiwalnej (czytaj: starej i zakurzonej) kopii zapasowej i nie mamy pojęcia, jakie w tym czasie było hasło dla SAP*, a był to np. jedyny użytkownik z uprawnieniami SAP_ALL. Generalizując: stanąłem przed problemem zmiany hasła w systemie, do którego nie byłem się w stanie zalogować na potrzebny mi mandant. Cała procedura okazała się nawet dość prosta, trzeba było tylko trochę poszukać.

Jak się po krótkim szukaniu okazało, SAP trzyma dane użytkowników w tabeli USR02. Interesującymi nas polami są:
BNAME - login użytkownika
MANDT - mandant, do którego przynależny jest wpis
PASSCODE - hash hasła (to jest chyba 160 bitowe SHA1)

Żeby 'zresetować’ hasło, wystarczy poszukać sobie użytkownika, którego hasło znamy, skopiować na bok hash tego hasła i podmienić pole w interesującym nas miejscu. Robi się to jakoś tak:

select PASSCODE from USR02 where BNAME='[nazwa_uzytkownika_ktorego_haslo_znamy]' and MANDT='[mandant]'
update USR02 set PASSCODE=[to_co_dostalismy_z_selecta] where BNAME='[nazwa_uzytkownika_ktoremu_zmieniamy_haslo]' and MANDT='[mandant]';

Mandanty obu użytkowników mogą być oczywiście różne.

Jeszcze przepis typu „krok po kroku” (środowisko to SAP ECC 6.0 z bazą MSSQL2005 zainstalowany na Windows 2003).

Jedynym narzędziem, które będzie nam potrzebne jest „SQL Server Management Studio”.

Uruchamiamy owo narzędzie, szukamy interesującej nas bazy, a potem wciskamy „New Query”.

Szukamy sobie użytkownika, dla którego hasło znamy i wpisujemy coś takiego:

select PASSCODE from [nazwa_bazy].USR02 where BNAME='[nazwa_uzytkownika]' and MANDT='[mandant]';

a potem wciskamy CTRL-E i patrzymy, co się pojawiło na dole.

Następnie piszemy kolejną linijkę, która wygląda mniej-więcej tak:

update [nazwa_bazy].USR02 set PASSCODE=[nasze_haslo] where BNAME='[nazwa_uzytkownika]' and MANDT='[mandant]';

i po raz kolejny wciskamy CTRL-E.

Koniec. Możemy się zalogować na naszego użytkownika, używając znanego wcześniej hasła.

Lokalne repozytorium dla YUMa

30 listopada, 2010 (15:07) | centos, linux | By: konrad

Infrastruktura serwerowa w mojej firmie w pewnym momencie zaczęła dość intensywnie rosnąć. W dodatku, wobec wszędobylskich portali i web-serwisów, znaczna część tych systemów działa pod kontrolą CentOSa (Apache wydaje mi się odrobinę bezpieczniejszy i mniej wymagający, niż IIS). Wszystko to wymaga okresowych „przeglądów” i instalowania aktualizacji (w moim przypadku głównie ze względu na bezpieczeństwo). Niby nie jest to jakoś specjalnie skomplikowane – wystarczy zalogować się na taką maszynę, uruchomić YUMa, pobrać nowe wersje pakietów i klepnąć „OK”. No właśnie, ale czy te wszystkie aktualizacje trzeba za każdym razem pobierać z Sieci? Otóż nie, i zmiana takiego stanu rzeczy nie jest nawet taka bardzo skomplikowana.

Można, na przykład, skorzystać z takiej instrukcji, ale dla mnie jest ona odrobinę za bardzo skomplikowana, poza tym nie przepadam za rsync’iem.

Alternatywny proces tworzenia własnego repozytorium pakietów w moim przypadku wyglądał tak:

Po pierwsze – w katalogu /mnt/md3 (bo akurat tutaj miałem trochę miejsca)  utworzyłem odpowiednią strukturę katalogów:
[kbechler@sv ~]# tree /mnt/md3/mirror/centos/5.5 -L 2
/mnt/md3/mirror/centos/5.5
|-- addons
|   |-- i386
|   `-- x86_64
|-- centosplus
|   |-- i386
|   `-- x86_64
|-- contrib
|   |-- i386
|   `-- x86_64
|-- extras
|   |-- i386
|   `-- x86_64
|-- os
|   |-- i386
|   `-- x86_64
`-- updates
|-- i386
`-- x86_64

Po drugie – napisałem sobie prosty plik, o taki:


[kbechler@sv ~]$ cat /mnt/md3/mirror/centos55.lftp
open http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.5
lcd /home/www/html/centos/5.5
echo CENTOS_OS
mirror -e --verbose=3 --parallel=10 os/x86_64 os/x86_64
mirror -e --verbose=3 --parallel=10 os/i386 os/i386
echo CENTOS_ADDONS
mirror -e --verbose=3 --parallel=10 addons/x86_64 addons/x86_64
mirror -e --verbose=3 --parallel=10 addons/i386 addons/i386
echo CENTOS_EXTRAS
mirror -e --verbose=3 --parallel=10 extras/x86_64 extras/x86_64
mirror -e --verbose=3 --parallel=10 extras/i386 extras/i386
echo CENTOS_UPDATES
mirror -e --verbose=3 --parallel=10 updates/x86_64 updates/x86_64
mirror -e --verbose=3 --parallel=10 updates/i386 updates/i386
echo CENTOS_CENTOSPLUS
mirror -e --verbose=3 --parallel=10 centosplus/x86_64 centosplus/x86_64
mirror -e --verbose=3 --parallel=10 centosplus/i386 centosplus/i386
echo CENTOS_CONTRIB
mirror -e --verbose=3 --parallel=10 contrib/x86_64 contrib/x86_64
mirror -e --verbose=3 --parallel=10 contrib/i386 contrib/i386
exit

Po trzecie – w katalogu /etc/cron.daily utworzyłem skrypt, który wywołuje polecenie:

lftp -f /mnt/md3/mirror/centos55.lftp > /var/log/mirror_centos55.log

Po czwarte – skonfigurowałem Apache’a na ten maszynie tak, aby link „http://sv/centos” wskazywał na katalog /mnt/md5/mirror/centos.

Po piąte – poczekałem, aż skrypt z crona zrobi swoje i na lokalnym serwerze będę miał aktualną kopię wszystkich pakietów. Tutaj drobna uwaga: przy wolnym łączu do internetu trzeba albo sprytnie napisać skrypt do synchronizacji, albo uruchomić tą ostatnią „z palca”, a skrypt dopisać do crona po jej zakończeniu. W innym wypadku możemy się natknąć na race-condition, w którym kolejne wywołania „zazębią” się ze sobą (o ile pierwsza synchronizacja nie zakończy się w ciągu 24h).

Po szóste (i ostatnie)  – poprosiłem wszystkie moje systemy, aby pobierały aktualizacje z nowo utworzonego repozytorium. Polegało to na tym, że wywaliłem standardową zawartość katalogu /etc/yum.repos.d i wrzuciłem tam poniższy plik:

[kbechler@sv ~]$ cat /etc/yum.repos.d/centos.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://sv/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
[updates]
name=CentOS-$releasever - Updates
baseurl=http://sv/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
[addons]
name=CentOS-$releasever - Addons
baseurl=http://sv/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
[extras]
name=CentOS-$releasever - Extras
baseurl=http://sv/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://sv/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://sv/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

I to tyle – od momentu wykonania tego powyżej, wszystkie moje maszyny instalują i aktualizują pakiety z lokalnego repozytorium. Dzięki temu zaoszczędziłem odrobinę ruchu (co akurat nie jest w moim przypadku specjalnie ważne), oraz uprościłem konfigurację samej sieci – większość z tych maszyn nie „wystaje” na zewnątrz i konfiguracja NATa stała się zbędna.

Naprawdę dużo plików

23 listopada, 2010 (21:07) | linux | By: konrad

Ile plików w jednym katalogu to „dużo”? Tysiąc, dwa, pięć? Maksymalna ilość plików, które może zawierać pojedynczy katalog jest zależna od systemu plików, jakiego używamy. I choć wartość ta jest z reguły bardzo duża, to jednak w rzeczywistości już przy dużo mniejszej ilości możemy odczuć drastyczny spadek wydajności.

Przykład: Debian służący jako serwer WWW na którym miałem okazję ostatnio grzebać. Niestety, webmaster zapomniał, że czasami warto czyścić katalogi, w których serwis zapisuje dane sesji użytkownika. Efekt? Proszę bardzo:
k@m:~/domains/xxx/public_html/cache$ ls -1 | wc -l
594013
Już samo listowanie takiego katalogu jest bardzo uciążliwe. A co ma powiedzieć serwer, które operuje na zawartych w nim plikach i tworzy kolejne? Po znalezieniu kilku takich „kwiatków” przestałem się dziwić, że maszyna działała wyjątkowo niestabilnie. Nawet biedny tar nie był w stanie zrobić kopii bezpieczeństwa takiego katalogu…

OK, ale co możemy z taką sytuacją zrobić? Po pierwsze spróbować przywrócić normalność, czyli wyrzucić wszystko, co się w tym katalogu znajduje.

Upsssss….
k@m:~/domains/xxx/public_html/cache$ rm ./*
bash: /bin/rm: Lista argumentów za długa
Chyba ilość plików przeraziła basha :-)

Spróbujmy więc inaczej:

k@m:~/domains/xxx/public_html/cache$ find . -type f | xargs rm
[tutaj musimy uzbroić się w cierpliwość]

k@m:~/domains/xxx/public_html/cache$ ls -1 | wc -l
0

Ta-dam :-)

Po drugie – grzecznie (ale stanowczo) poprosić webmastera, żeby poprawił swój portal i sprzątał po sobie śmieci.

A po trzecie – tak na wszelki wypadek – dorzucić do crona coś takiego:

find /home/www/domains/xxx/public_html/cache/* -mtime +10 | xargs rm

Konkluzja: Warto zaznajomić się z poleceniem xargs i ideą potoków, bo czasami narzędzia, które uważamy za podstawowe i uniwersalne, odmawiają współpracy.

Mała aktualizacja (rekordu): Inny serwer, ten sam webmaster:
e:/home/domains/yyy/public_html/__sessions__# ls -1 |wc -l
3125242